흰 스타렉스에서 내가 내리지

JPQL 페이징 API 본문

JPA

JPQL 페이징 API

주씨. 2024. 4. 13. 01:22
728x90
  • 데이터베이스 종류마다 페이징을 처리하는 SQL 문법이 다르다.
  • JPA 는 페이징을 아래 두 API 로 추상화했다.
    • 1. setFirstResult (int startPosition) : 조회 시작 위치 
    • 2. 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번 데이터를 조회한다.

 

 

* 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 ?, ?

 

  • ?, ? 에 파라미터 바인딩이 된다.
    • 각각 10, 20