상속관계 매핑이란 ?
객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것
슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현
각각 테이블로 변환
@Inheritance(strategy = InheritanceType.XXX)
장점
통합 테이블로 변환
장점
단점
서브타입 테이블로 변환
이건 쓰면 안된다..
장점
단점
공통 매핑 정보가 필요할 때 사용
테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할
@Entity 클래스가 상속 가능한 것은 엔티티거나 @MSC
를 사용해야 한다.
createDate, updateDate 등이 사용되면 유용하다.
BaseEntity 를 만들고
extends BaseEntity
로 상속받아 사용하면 된다.
@MappedSuperclass
pubic class BaseEntity{
}
em.find(BaseEntity)
불가 Item
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public abstract class Item {
}
Book
@Entity
public class Book extends Item{
private String author;
private String isbn;
}
이런식으로 사용하면 단일 테이블 생성이 가능하다.