경로 표현식?
. (점)을 찍어 객체 그래프를 탐색하는 것
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
묵시적 조인
select m.team from Member m
- 경로 표현식에 의해 묵시적으로 SQL 조인 발생
- inner join만 가능
🔎 주의
- 항상 내부 조인
- 컬렉션은 경로 탐색의 끝, 명시적 조인을 통해 별칭 얻기
- 경로 탐색은 주로 select, where 절에서 사용하지만
묵시적 조인으로 인해 from (JOIN)절에 영향을 줌
👉 가급적 명시적 조인 사용