자바에서 인스턴스화된 객체로 클래스의 변수나 메서드에 접근할 때 .을 이용해 접근하는 것 처럼, jpql 쿼리에서 .으로 객체의 값에 점을 찍어 객체 그래프를 탐색하는 것을 경로 표현식이라고 한다.
상태 필드는 일반적인 값을 저장하기 위한 필드이다. 즉, int, varchar등의 자료형을 가지는 기본적인 데이터를 저장한다. 상태필드는 더 나아갈 경로가 존재하지 않으므로 jpql에서 부가적인 조인 등의 탐색 또한 일어나지 않는다.
연관 필드는 연관관계가 맺어진 외래 테이블의 값을 위한 필드이다. 단일 값 연관 필드와 컬렉션 값 연관 필드로 나뉜다.
-
@ManyToOne, @OneToOne처럼 엔티티를 대상으로 하는 필드이다.
jpql에서 단일 값 연관 필드를 경로로 표현하여 조회하게 되면, 묵시적 내부 조인이 실행된다. 즉, 조인 쿼리를 직접 쓰지 않더라도, 단일 값 연관 필드를 조회하면 조인 쿼리가 날아간다. 조인한 엔티티에서 다른 필드를 더 탐색할 수도 있다.
-
@OneToMany, @ManyToMany처럼 엔티티들의 컬렉션을 대상으로 하는 필드이다. 단일 값 연관 필드와 마찬가지로 묵시적 내부 조인이 발생하지만, 엔티티의 정보를 더 탐색하는 것은 불가능하다.
하지만 FROM 절에서 명시적 조인을 통해 별칭을 얻어 별칭을 통해 탐색하는 것은 가능하다.