.
을 통해서 객체 내부를 탐색하는 것을 말한다.select m.username -> 상태 필드
from Member m
join m.team t -> 단일 값 연관 필드
join m.orders o -> 컬렉션 값 연관 필드
where t.name = '팀A'
성능 최적화
를 위한 제공하는 기능엔티티(단수)
이다.영속성 컨텍스트
1차 캐시에 저장한다./* JPQL -> 회원을 조회하면서 연관된 팀도 함께 조회 (하나의 SQL로!) */
select m from Member m join fetch m.team
/* 실제 수행되는 SQL */
select M.*,T.* from member m
inner join team t on m.team_id = t.id
// M.*과 T.*은 모든 컬럼을 생략으로 표시한 것 실제로는 이렇게 나오지 X
프젝 예시
컬렉션(복수)
이다./* JPQL -> 팀을 조회하면서 소속된 멤버들도 함께 조회 (하나의 SQL로!) */
select t from Team t join fetch t.members
/* 실제 수행되는 SQL */
select M.*,T.* from Team t
inner join Member m on t.id=m.team_id
// M.*과 T.*은 모든 컬럼을 생략으로 표시한 것 실제로는 이렇게 나오지 X
[JPQL]
select t
from Team t join t.members m
where t.name = ‘팀A'
[SQL]
SELECT T.*
FROM TEAM T
INNER JOIN MEMBER M ON T.ID=M.TEAM_ID
WHERE T.NAME = '팀A'
-> Team 엔티티만 조회하고 연관 객체인 member에 대해 조회하지 않는다.
fetch join시 연관된 엔티티를 함께 조회한다.
[JPQL]
select t
from Team t join fetch t.members
where t.name = ‘팀A'
[SQL]
SELECT T.*, M.* // 추가됨
FROM TEAM T
INNER JOIN MEMBER M ON T.ID=M.TEAM_ID
WHERE T.NAME = '팀A'