상속관계 매핑
1. 조인 전략 -> 각각 테이블로 변환
2. 통합 테이블로 변환 -> 단일 테이블 전략
3. 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략
주요 어노테이션
- @Inheritance(strategy=InhertanceType.XXX)
- JOINED: 조인 전략
- SINGLE_TABLE: 단일 테이블 전략
- TABLE_PER_CLASS: 구현 클래스마다 테이블 전략
- @DiscriminatorColumn(name = "DTYPE")
- @DiscriminatorValuue("XXX")
예시로 아래의 그림같이 Item에 Album과 Movie, Book이 상속된다고 가정하자
1. 조인 전략
- 테이블을 정규화하며 저장공간을 효율화 하지만 조회 시 조인을 많이 사용하여 성능을 저하시키고 조회 쿼리가 복잡하다.
2. 단일 테이블 전략
- 조인이 필요 없으므로 조회 성능이 빠르고 조회 쿼리가 단순하지만,
테이블이 커질 수 있다 -> 상황에 따라 성능이 오히려 느려질 수 있다.
3. 구현 클래스마다 테이블 전략(추천 x)
- @DiscriminatorColumn()
'JPA' 카테고리의 다른 글
[JPA] 지연 로딩과 즉시 로딩 (2) | 2021.01.09 |
---|---|
[JPA] 프록시란? (0) | 2020.12.23 |
연관관계 매핑 (0) | 2020.12.22 |
엔티티 매핑 (1) | 2020.12.21 |
영속성 관리 (1) | 2020.12.21 |