[JPA] JPQL 경로 표현식

hi·2022년 10월 16일

경로 표현식?
. (점)을 찍어 객체 그래프를 탐색하는 것


select m.username 👉 상태필드
from Member m
join m.team t 👉 단일 값 연관 필드
join m.orders o 👉 컬렉션 값 연관 필드
where t.name = '팀A'

상태 필드 (state field)

단순히 값을 저장하기 위한 필드
경로 탐색의 끝 , 탐색 X

연관 필드 (association field)

연관관계를 위한 필드

  • 단일 값 연관 필드

    • 대상이 엔티티
    • @ManyToOne, @OneToOne
    • 묵시적 내부 조인 발생 (inner join) , 탐색 O
  • 컬렉션 값 연관 필드

    • 대상이 컬렉션
    • @OneToMany, @ManyToMany
    • 묵시적 내부 조인 발생 (inner join) , 탐색 X
      👉 FROM 절에서 명시적 조인을 통해 별칭을 얻으면,
      별칭을 통해 탐색 가능

명시적 조인

select m from Member m join m.team t

  • join 키워드 직접 사용

묵시적 조인

select m.team from Member m

  • 경로 표현식에 의해 묵시적으로 SQL 조인 발생
  • inner join만 가능

🔎 주의

  • 항상 내부 조인
  • 컬렉션은 경로 탐색의 끝, 명시적 조인을 통해 별칭 얻기
  • 경로 탐색은 주로 select, where 절에서 사용하지만
    묵시적 조인으로 인해 from (JOIN)절에 영향을 줌

👉 가급적 명시적 조인 사용

0개의 댓글