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
'JPA' 카테고리의 다른 글
Criteria 기초(feat. JPQL의 빌더 클래스) (0) | 2022.06.16 |
---|---|
페치 조인과 일반 조인의 차이(feat. 연관된 엔티티 함께 조회) (0) | 2022.06.15 |
프로젝션 NEW 명령어 (0) | 2022.06.14 |
객체지향 쿼리 소개(feat. JPQL) (0) | 2022.06.14 |
지연 로딩(Lazy Loading) - feat. 프록시 (0) | 2022.06.14 |