본문 바로가기

JPA

상속관계 매핑

상속관계 매핑

1. 조인 전략 -> 각각 테이블로 변환

2. 통합 테이블로 변환 -> 단일 테이블 전략

3. 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략

 

주요 어노테이션

 - @Inheritance(strategy=InhertanceType.XXX)

   - JOINED: 조인 전략

   - SINGLE_TABLE: 단일 테이블 전략

   - TABLE_PER_CLASS: 구현 클래스마다 테이블 전략

- @DiscriminatorColumn(name = "DTYPE")

- @DiscriminatorValuue("XXX")

 

예시로 아래의 그림같이 Item에 Album과 Movie, Book이 상속된다고 가정하자

1. 조인 전략

InheritanceType.JOINED

 

데이터 삽입

 

테이블 변경없이 외래 키 참조

- 테이블을 정규화하며 저장공간을 효율화 하지만 조회 시 조인을 많이 사용하여 성능을 저하시키고 조회 쿼리가 복잡하다.

 

2. 단일 테이블 전략

모든 테이블의 컬럼이 다 들어가 있다. 

- 조인이 필요 없으므로 조회 성능이 빠르고 조회 쿼리가 단순하지만,

테이블이 커질 수 있다 -> 상황에 따라 성능이 오히려 느려질 수 있다.

 

3. 구현 클래스마다 테이블 전략(추천 x)

 

- @DiscriminatorColumn()

구분 가능, 속성에 따라 이름 변경 가능

 

 

출처 - www.inflearn.com/course/ORM-JPA-Basic

'JPA' 카테고리의 다른 글

[JPA] 지연 로딩과 즉시 로딩  (2) 2021.01.09
[JPA] 프록시란?  (0) 2020.12.23
연관관계 매핑  (0) 2020.12.22
엔티티 매핑  (1) 2020.12.21
영속성 관리  (1) 2020.12.21