자바 ORM 표준 JPA 프로그래밍(인프런)

Ch10. 객체지향 쿼리 언어1(기본 문법) - Projection(SELECT)

webmaster 2021. 12. 17. 11:59
728x90

SELECT 절에 조회할 대상을 지정하는 것

프로젝션 대상: 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자 등 기본 데이터 타입) 

엔티티 프로젝션

Member 엔티티 조회(엔티티 프로젝션)
Team 엔티티 조회(엔티티 프로젝션)
SQL Join이 되는걸 예측이 가능하도록 써 주어야 된다

  • Select 절로 조회해온 대상이 Entity이다.

임베디드 타입 프로젝션

인베디드 프로젝션 -> 조회해온 대상을 select 값이 값타입이다.

  • Select 절로 조회해온 대상이 값 타입인 임베디드이다.

스칼라 타입 프로젝션

스칼라 타입 프로젝션 -> 조회해온 대상을 select 값이 스칼라 타입이다.

  • DISTINCT로 중복 제거
  • Select 절로 조회해온 대상이 스칼라 타입이다.

프로젝션 - 여러 값 조회

  • SELECT m.username, m.age FROM Member m
  • 1. Query 타입으로 조회 
  • 2. Object[] 타입으로 조회

Object 타입으로 프로젝션을 조회해온다.
Object 타입으로 프로젝션을 조회해온다.

  • 3. new 명령어로 조회 

new 생성자를 통해 DTO로도 프로젝션을 받을 수가 있다

  • 단순 값을 DTO로 바로 조회 SELECT new jpabook.jpql.UserDTO(m.username, m.age) FROM Member m 
  • 패키지 명을 포함한 전체 클래스 명 입력 
  • 순서와 타입이 일치하는 생성자 필요
  • 문자열 이기 때문에 오류가 발생할 수도 있는데, QueryDsl을 사용하면 이러한 문제 해결 가능
728x90