본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다.
페이징
JPA는 다음 두 API를 사용해 페이징 처리를 할 수 있다.
setFirstResult(int startPosition) | 조회 시작 위치 |
setMaxResults(int maxResult) | 조회 할 데이터의 수 |
거두절미하고 바로 코드로 알아보자.
List<Member> result = em.createQuery("select m from Member m order by m.age desc", Member.class)
.setFirstResult(1) // 1번째 부터
.setMaxResults(10) // 10개를 가져오겠다
.getResultList();
System.out.println("result.size = " + result.size());
for (Member member : result) {
System.out.println("member = " member);
}
- order by m.age desc : 데이터를 나이 내림차순으로 정렬한다.
- setFirstResult(1) : 1번째 데이터부터 조회해온다.
- setMaxReuslt(10) : 10개의 데이터를 조회해온다.
Hibernate:
/* select
m
from
Member m
order by
m.age desc */ select
... 생략
from
Member member0_
order by
member0_.age desc limit ? offset ?
result.size() = 10
Member{id=51, username='member50', age=50}
Member{id=50, username='member49', age=49}
Member{id=49, username='member48', age=48}
Member{id=48, username='member47', age=47}
Member{id=47, username='member46', age=46}
Member{id=46, username='member45', age=45}
Member{id=45, username='member44', age=44}
Member{id=44, username='member43', age=43}
Member{id=43, username='member42', age=42}
Member{id=42, username='member41', age=41}
출력을 보면 나이 내림차순으로 조회하고, 0번째 데이터부터 10개의 데이터를 정상적으로 가져온 것을 확인할 수 있다.
쿼리문을 보면 현재 DB를 H2로 설정했기 때문에 H2에 맞는 SQL로 작성되었다.
만약 다른 DB를 사용하고 싶다면 방언을 변경 해주면 된다.
💡 방언 변경방법
📁 META-INF/persistance.xml
// H2 설정
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
// Oracle 설정
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle8iDialect"/>
- dialect 설정만 변경해주면 JPA가 알아서 설정해준 DB에 맞는 SQL을 날려준다.
- ex) Oracle
'🌱 Spring > JPA' 카테고리의 다른 글
[JPA] Auditing 기능을 사용해 공통 칼럼(등록일, 수정일 등) 관리하기 (0) | 2023.04.03 |
---|---|
[JPA] OSIV (0) | 2022.12.27 |
[JPA] JPQL : 서브 쿼리 (0) | 2022.11.06 |
[JPA] JPQL : 조인 (0) | 2022.11.04 |
[JPA] JPQL : 기본 문법 (0) | 2022.10.29 |
[JPA] JPA가 지원하는 쿼리 방법 (JPQL, Criteria, QueryDsl) (0) | 2022.10.29 |
[JPA] 값 타입 (0) | 2022.10.19 |
[JPA] 영속성 전이(CASECADE)와 고아 객체 (0) | 2022.10.18 |