프로젝션(SELECT)

Mina Park·2022년 10월 23일
0

1. 기본개념

  • SELECT절에 조회할 대상을 지정하는 것
  • 프로젝션 대상
    • 엔티티
    • 임베디드 타입
    • 스칼라 타입(숫자, 문자 등 기본 데이터 타입) -> SQL은 스칼라 타입만 가능했음
  • DISTINCT로 중복 제거 가능

2. 프로젝션 예시

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 -> 스칼라 타입 프로젝션

3. 여러 값 조회 프로젝션 예시

			//방법1. Query 타입으로 조회
            List res1 = em.createQuery("select m.username, m.age from Member m")
                    .getResultList();

            //방법2. Object[] 타입으로 조회
            List<Object[]> res2 = em.createQuery("select m.username, m.age from Member m")
                    .getResultList();

            //방법3. new 명령어로 조회
            //단순값을 바로 DTO로 조회(생성자 호출)
            List<MemberDTO> res3 = em.createQuery("select new jpql.MemberDTO(m.username, m.age) from Member m", MemberDTO.class)
                    .getResultList();
  • new 명령어로 조회하는 경우
    • 패키지명을 포함한 전체 클래스명 입력(문자열이므로)
    • 순서와 타입이 일치하는 생성자 필요

0개의 댓글