반응형
https://lordofkangs.tistory.com/390.
연관관계있는 엔티티는 JOIN을 활용하여 다른 엔티티에 접근한다. 그렇다면 상속관계에 있는 엔티티들은 어떻게 접근할까? JPA는 상속구조에 유용한 함수를 제공한다. 함수를 이용하면 JOIN문을 사용하지 않아도 부모가 자식에 접근할 수 있다.
TYPE
SELECT i
FROM Item i
WHERE TYPE(i) IN (Book,Movie)
TYPE 함수는 부모테이블에서 특정 자식만 필터링하는 기능을 제공한다. Item 테이블에서 Album 타입은 제외하고 DTYPE이 Book과Movie인 레코드를 필터링하여 조회할 수 있다.
TREAT
SELECT i
FROM Item i
WHERE TREAT(i as Book).author = 'kim'
TREAT는 일종의 캐스팅 기능을 제공한다. author는 자식인 Book 엔티티가 갖고 있다. 부모인 Item이 자식의 컬럼인 author에 접근하기 위해, Book으로 캐스팅하는 원리이다.
이는 실제 쿼리로 보면 JOIN으로 구현된다.
상속관계에 있는 엔티티는 굳이 명시적으로 JOIN을 하지 않아도 함수로 접근할 수 있다.
참고자료
반응형
'JPA > JPQL' 카테고리의 다른 글
[JPA] 벌크(Bulk) 연산 (0) | 2023.06.19 |
---|---|
[JPA] Named 쿼리 (0) | 2023.06.19 |
[JPA] 페치 조인 ( JOIN FETCH ) (0) | 2023.06.15 |
[JPA] 묵시적 조인보다는 명시적 조인 (0) | 2023.06.15 |
[JPA] 쿼리결과 변환하기 ( JPQL 함수 ) (0) | 2023.06.14 |