김영한님 스프링 강의 정리/JPA
JPQL - 프로젝션과 페이징 기능
코등
2021. 3. 9. 20:48
(프로젝션) - JPQL의 select 절에서 조회할 대상을 지정하는 방식을 말한다.
1. 엔티티 프로젝션 : 조회된 데이터가 하나의 객체인 경우
2. 임베디드 타입 프로젝션 : 엔티티 객체 안에 존재하는 임베디드 타입 객체를 조회하는 경우
3. 스칼라 타입 프로젝션 : 자바에서 기본 제공되는 자료형을 조회하는 경우 (엔티티 객체의 속성)
엔티티 프로젝션의 경우 조회한 결과들에 대해서 모두 영속성 컨텍스트의 관리가 보장된다.
(페이징) - order by로 정렬했을때 일부 결과만 가져오도록 설정
기존 쿼리에서 둘만 추가하면 된다.
List<Member> resultList = em.createQuery(JPQL, Member.class)
.setFirstResult(0) // 0번째 결과부터
.setMaxResults(10) // 10개를 가져온다
.getResultList();
MySQL의 limit이나 Oracle의 rownum과 동일한 기능이다.