상속관계 매핑
슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법
- 각각 테이블로 변환 -> 조인 전략
- 통합 테이블로 변환 -> 단일 테이블 전략
- 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략
주요 어노테이션
@Inheritance(strategy=InheritanceType.XXX)
- JOINED : 조인 전략
- SINGLE-TABLE : 단일 테이블 전략, 별도의 설정이 없다면 JPA의 기본 전략
- TABLE-PER-CLASS : 구현 클래스마다 테이블 전략
@DiscriminatorColumn(name="DTYPE")
- DTYPE이 추가된다.
- DTYPE이 없으면 어떤 객체가 생성된지 알 수 없기 때문에 넣어주도록 한다.
- @DiscriminatorColumn(name = "XXX") -> DTYPE의 이름을 설정할 수 있다.
- 단일 테이블 전략에서는 DTYPE이 꼭 필요하기 때문에 @DiscriminatorColumn이 없어도 자동으로 DTYPE을 만든다.
@DiscriminatorValue("XXX")
@Entity
@DiscriminatorValue("A")
public class Album extends Item {
private String artist;
}
Album객체가 생성될 때 DTYPE이 코드에서 설정한 "A"로 변경된다.
참고 :
김영한. 『자바 ORM 표준 JPA 프로그래밍』. 에이콘, 2015.
자바 ORM 표준 JPA 프로그래밍 - 기본편