중요하지 않다고 한다.
객체에서는 다형성 되게 중요한 개념인데
JPQL은 특정 대상만 조회할 수 있는 기능이 있다.
? 그럼 그냥 DTYPE으로 하면 되는 거 아닌가?
맞다. 쿼리가 그렇게 나간다. 보통 객체에는 DTYPE이 없었던 걸로 기억하는데..
select i from Item i where type(i) in(Book, Movie)
select 별칭 from 부모엔티티 별칭 where type(별칭) in(조회할자식엔티티1, 조회할자식엔티티2);
하면
select i from i where i.DTYPE in ('B', 'M');
이렇게 나간다.
TREAT 기능 (직역 : ~ 대하다)
자바의 타입캐스팅과 유사
상속구조에서 부모타입을 특정 자식타입으로 다룰 때 사용.
from, where, select 절에서 사용
select i from Item i where treat(i as Book).auther = 'kim'
i를 Book으로 대하면서 auther가 kim인 것만 가져옴,
이렇게 하면 쿼리가
select i.* from Item i where i.DTYPE = 'B' and i.auther = 'kim'
이렇게 나감
먼저 Book만 추리고 거기서 kim을 찾음
싱글테이블이냐 JOIN 전략이냐에 따라 다르기도 함.
'JPA > JPA 기본' 카테고리의 다른 글
51. Named 쿼리 (0) | 2023.11.03 |
---|---|
50. 엔티티 직접 사용 (0) | 2023.11.03 |
48-2. 패치 조인의 한계 (0) | 2023.11.02 |
48. 페치 조인 한계 (0) | 2023.11.01 |
47. 페치 조인 기본 (0) | 2023.11.01 |