JQPL 문법

JooHeon·2021년 11월 18일
0
post-custom-banner

🖊 프로젝션

  • SELECT 절에 조회할 대상을 지정하는 것
  • 프로젝션 대상은 엔티티, 임베디드 타입, 스칼라 타입(기본 데이터)
  • 가져온 엔티티의 개수와 상관없이 모두 영속성 컨텍스트에서 관리된다.
select m from Member m // 엔티티 프로젝션
select m.address from Member m // 임베디드 타입 프로젝션
select m.username from Member m // 스칼라 타입 프로젝션

// 명시적 조인
select t from Member m join m.team t

// 묵시적 조인
select m.team from Member m

🖊 페이징 API

  • JPA에는 페이징을 두 개의 API로 추상화한다.
  • setFirstResult : 조회 시작 위치 지정
  • setMaxResults : 조회할 데이터 수 지정
  • 패치 조인과 같이 사용할 수 없으므로 @BatchSize를 지정해주면
    쿼리를 지정해둔 개수만큼 날려 즉시 로딩의 효과를 얻을 수 있다.

🖊 조인

  • 일반적인 조인 방법
"select m from Member m join m.team t where t.name = :teamName"; 
// teamName은 파라미터로 받는 값
"select m from Member m left join m.team t;
"select m from Member m , Team t where m.username = t.name"
  • ON절은 연관관계가 없는 엔티티의 외부 조인을 지원한다.
  • ON절을 활용한 조인
회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인
JPQL:
"select m, t from Member m left join m.team t on t.name = 'A'"


SQL:
select m.*, t.* from Member m left join t on m.TEAM_ID = t.id and t.name = 'A'


회원의 이름과 팀의 이름이 같은 대상 외부 조인
JPQL: select m, t from Member m left join Team t on m.username = t.name

SQL : select m.*, t.* from Member m left join Team t on m.username = t.name
post-custom-banner

0개의 댓글