# JPQL 경로표현식과 묵시적 조인
# 경로표현식과 묵시적 조인
경로를 표현하는 식은 select m from member m
이라는 표현식에서 m으로 따라가는 것을 의미한다.
member라는 객체에 Team이라는 Entity, Address라는 값타입, old라는 값, 그리고 pets라는 컬렉션 타입이 있다고 하겠다.위 4가지 변수는 각각 엔티티, 값타입, 필드값, 컬렉션으로 다른 특징을 가지고 있다. 위 4가지의 경우를 경로표현식으로 추적해 들어갔을 때의 상황을 보여주려고 한다.
# 엔티티와 값타입
select m.team from member m
와 같이 엔티티를 설정한 경우 m.team 이후로 team과 관련된 값들로 접근할 수 있다.
값타입도 동일하게 사용가능하다.
# 필드변수
select m.old from member m
와 같이 필드변수에 접근한 경우에는 더이상 깊이 들어가는 것은 불가능하다.
# 컬렉션 타입
select m.pets from member m
와 같이 컬렉션 변수에 접근한 경우에도 동일하게 더 이상 추가로 m.pets.xx로 접근이 불가능하다.(size는 가능)
# 묵시적 조인
컬렉션 타입이나 엔티티 타입을 조회할 때 묵시적으로 조인을 수행하여 값을 내어준다. 객체의 경우 .을 통해 값을 가져올 수 있지만, DB에서는 그렇지 않다. 따라서 묵시적으로 조인이 이루어지게 된다.
되도록이면 묵시적인 조인은 성능적인 면에서 사용하지 않는 것이 좋다. 명시적인 조인을 사용하도록 하자.
select m.name from team t join t.members m
으로 명시적으로 조인을 하게 되면 m에 대한 별칭을 얻을 수 있고 이렇게 사용하면 추가적인 접근도 가능해진다.
← Hello JPQL 페치조인의 기본 →