관계형 데이터베이스는 상속관계가 없다.
'슈퍼타입', '서브타입' 관계라는 모델링 기법이 객체 상속과 유사하다
-> 상속관계 매핑은 객체의 상속구조와 DB의 슈퍼타입 서브타입 관계를 매핑한 것이다.
DTYPE 이름을 바꾸기 위해 사용한다. (EX. Movie -> M)
슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법은 3가지가 있다.
// 부모
@Entity
public class Item {
@Id @GeneratedValue
private Long id;
private String name;
private int price;
}
// 자식
@Entity
public class Album extends Item{
private String artist;
}
@Entity
public class Book extends Item {
private String author;
private String isbn;
}
@Entity
public class Movie extends Item {
private String director;
private String actor;
}
부모 클래스에서 @Inheritance 추가
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public class Item {
@Id @GeneratedValue
private Long id;
private String name;
private int price;
}
부모 클래스에서 @Inheritance 전략 변경
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Item {
...
}
위 3가지 중 어떤 방식으로 구현해도 JPA 매핑이 가능하다