페이징이란 한 화면에서 보여주는 데이터의 범위를 결정하는 일련의 방법이라고 하는데,
뭐 mysql에서 limit 하고 하던 걸 페이징 이라고 하는 것 같다.
JPA는 페이징을 추상화 해버림
JPA에서는 페이징 할 때 2가지만 쓰면 됨.
setFirstResult(인덱스) : 조회 시작 위치
setMaxResults(인덱스) : 조회 끝 위치.
List<Member> result = em.createQuery("select m from Member m order by m.age desc", Member.class)
.setFirstResult(0)
.setMaxResults(10)
.getResultList();
for (Member m : result) {
System.out.println("result = " + m.getUsername());
System.out.println("result = " + m.getAge());
}
이렇게 하면 됨. 조회 시작위치, 조회 끝 위치 정해주면 됨. 저 쿼리 order by desc니까 높은순에서 부터 0(0이 가장 높은)부터 10개 가져옴.
그러면 쿼리가
Hibernate:
/* select
m
from
Member m
order by
m.age desc */ select
m1_0.id,
m1_0.age,
m1_0.team_id,
m1_0.username
from
Member m1_0
order by
m1_0.age desc offset ? rows fetch first ? rows only
이렇게 나감.
이게 페이징은 진짜 방언마다 다름. 오라클은 뭐 3depth 해가지고 무슨 3중 반복문처럼..
근데 JPA? 하이버네이트?는 그 방언을 지원해 주니..
'JPA > JPA 기본' 카테고리의 다른 글
42. 서브쿼리 (0) | 2023.10.31 |
---|---|
41. 조인 (0) | 2023.10.31 |
39. 프로젝션(select) (0) | 2023.10.30 |
38. JPQL 기본 문법 (0) | 2023.10.30 |
37. JPQL (0) | 2023.10.30 |