본문 바로가기
JPA/JPQL

JPQL 프로젝션

by 킹차니 2021. 7. 20.
김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C

 

프로젝션

 

프로젝션 : SELECT 절에 조회할 대상을 지정하는 것
프로젝션 대상
: 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자등 기본 데이터 타 )
SELECT
m FROM Member m -> 엔티티 프로젝션

 SELECT m.team FROM Member m -> 엔티티 프로젝션

SELECT m.address FROM Member m -> 임베디드 타입 프로젝션

 SELECT m.username, m.age FROM Member m -> 스칼라 타입 프로젝션 (DISTINCT로 중복 제거)

 

 

JPQL의 결과는 영속성 컨텍스트의 관리를 받습니다.

결과를 보시면 setAge(20)에 의한 update쿼리가 나가는 것을 볼 수 있습니다.

 

 

엔티티 프로젝션

 

엔티티 프로젝션시 위와 같은 방법보다는 아래와 같이 join을 사용하는 방법이 좋습니다.

JPA가 보내는 쿼리는 같습니다.

 

 

 

임베디드 타입 프로젝션

 

 

 

 

프로젝션 - 여러 값 조회

 

 

SELECT m.username, m.age FROM Member m

 

 

1. Query 타입으로 조회

 

 

2. Object[] 타입으로 조회

 

 

3. new 명령어로 조회

 

아래와 같은 MemberDTO객체를 생성하여 쿼리결과를 반환하는 방식입니다.

MemberDTO

 

  • 단순 값을 DTO로 바로 조회
  • SELECT new jpabook.jpql.UserDTO(m.username, m.age) FROM Member m
  • 패키지명을 포함한 전체 클래스명 입력
  • 순서와 타입이 일치하는 생성자 필요

'JPA > JPQL' 카테고리의 다른 글

JPQL 타입표현과 기타식  (0) 2021.07.21
JPQL 서브쿼리  (0) 2021.07.21
JPQL 페이징, 조인  (0) 2021.07.20
JPQL 기본문법과 기능  (0) 2021.07.19
JPQL 객체지향 쿼리 언어 소개  (0) 2021.07.19