JAVA/JPA

(JPA) 프로젝션

ri5 2021. 7. 8. 13:19

프로젝션 


• 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로 중복 제거

 

프로젝션 - 여러 값 조회

※ SELECT m.username, m.age FROM Member m

1. Query 타입으로 조회

Query query = em.CreateQuery("SELECT m.userName, m.age from Member m")

 

2. Object[] 타입으로 조회

List resultList = em.CreateQuery("SELECT m.userName, m.age from Member m")
Object o = resultList.get(0);
Object[] result = (Object[]) o;

 

3. new 명령어로 조회

List <Objectp[]> resultList = em.CreateQuery(
"SELECT new jpql.MemberDTO(m.username, m.age) FROM Member m"
).getReusltList();

• 패키지 명을 포함한 전체 클래스 명 입력

• 순서와 타입이 일치하는 생성자 필요