JPA

페이징 API

쿠카이든 2022. 6. 15. 14:50
728x90
  • JPA는 페이징을 다음 두 API로 추상화했다.
    • setFirstResult(int startPosition): 조회 시작 위치(0부터 시작한다)
    • setMaxResults(int maxResult): 조회할 데이터 수
TypedQuery<Member> query = 
    em.createQuery("SELECT m FROM Member m ORDER BY m.username DESC",
    Member.class);
    
query.setFirstResult(10);
query.setMaxResults(20);
query.getResultList();
  • 위 코드를 분석하면 FirstResult의 시작은 10이므로 11번째부터 시작해서 총 20건의 데이터를 조회한다. 따라서 11~30번 데이터를 조회한다.
  • 또한, 데이터베이스마다 다른 페이징 처리를 같은 API로 처리할 수 있는 것은 데이터 베이스 방언 덕분이다.
    • 참고로 MySQL의 페이징 쿼리 결과는 다음과 같다.
SELECT
    M.ID AS ID,
    M.AGE AS AGE,
    M.TEAM_ID AS TEAM_ID,
    M.NAME AS NAME
FROM
    MEMBER M
ORDER BY
    M.NAME DESC LIMIT ?, ?

 

출처 : JAVA 표준 ORM JPA 프로그래밍 (저자 김영한)

728x90