본문 바로가기

웹 기술 쌈싸먹기/JPA

[JPA] 페이징API

JPA 페이징API

 

1) 페이징API

  • JPA는 페이징을 다음 두 API로 추상화
  • setFirstResult(int startPosition) : 조회 시작 위치 (0부터 시작)
  • setMaxResults(int maxResult) : 조회할 데이터 수

 

2) 페이징API 예시

//페이징 쿼리
 String jpql = "select m from Member m order by m.name desc";
 List<Member> resultList = em.createQuery(jpql, Member.class)
                             .setFirstResult(10)
                             .setMaxResults(20)
                             .getResultList();

 

3) MySQL, Oracle에서의 페이징

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

 

  • Oracle의 페이징
SELECT * FROM
  (
    SELECT ROW_.*, ROWNUM ROWNUM_
FROM
( 
    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
  ) ROW_
  WHERE ROWNUM <= ?
)
WHERE ROWNUM_ > ?