JPA [기본] 프로젝션, 페이징

신재원·2023년 2월 1일
0

JPA 기본

목록 보기
24/31

📌 프로젝션 이란?

  • SELECT 절에서 조회할 대상을 지정하는것.
  • 조회할 대상 EX : 엔티티, 임베디드 타입, 스칼라타입
    1. SELECT m FROM Member m -> 엔티티 조회
    2. SELECT m.team FROM Member m -> 엔티티 조회 (m.team X 최대한 SQL 스럽게 (명시적 조인으로) 작성해야된다, 그렇지 않으면 Join이 발생함으로 예측이 안된다)
    3. SELECT m.address FROM Member m -> 임베디드 값 타입 조회
    4. SELECT m.username, m.age FROM Member m -> 스칼라 타입 조회
  • DISTINCT로 중복을 제거할수있다.

프로젝션 - 여러 값 조회

SELECT m.username, m.age FROM Member m (스칼라 타입)
1. Query 타입으로 조회
2. Object[] 타입으로 조회
3. new 명령어로 조회

  • 단순 값을 DTO로 바로 조회
  • SELECT new jpabook.jpql.UserDTO(m.username, m.age)from Memer m;
  • 패키지 명을 포함한 전체 클래스 명을 적어줘야 한다.
  • 순서와 타입, 변수 갯수가 일치하는 생성자 필요.

📌 페이징 API

JPA는 페이징을 두 API로 추상화한다.

✔ .setFirstResult (int startPosition) : 조회 시작위치 (0부터 시작)
✔ .setMaxResult (int maxResult) : 조회할 데이터 수
ex) ~번째 부터 ~개 까지 가져올거야.

Oracle 방언 (참고)

  • 3 depth로 RowNum쿼리가 실행된다. Select --> Select --> OrderBy

0개의 댓글