관계형 데이터베이스에서는 객체 지향에서 사용되는 상속이라는 개념이 없다. 대신 슈퍼타입 서브타입 관계라는 모델링 기업이 존재하는데 이 기법이 그나마 상속 개념과 흡사하다.
이를 이용하여 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것을 상속관계 매핑이라 하는데, 여기서 간단히 정리해보려 한다.
구현 예제
ex)
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Item {
@GeneratedValue @Id
private Long id;
...
@Entity
@DiscriminatorValue("TEST")
@PrimaryKeyJoinColumn(name = "Album_ID")
public class Album extends Item{
private String artist;
}
...
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "DTYPE")
@DiscriminatorValue("TEST")
@PrimaryKeyJoinColumn(name = "Album_ID")
구현 예제
ex)
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Item {
@GeneratedValue @Id
private Long id;
...
@Entity
@DiscriminatorValue("TEST")
public class Album extends Item{
private String artist;
}
...
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
구현 예제
ex)
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Item {
@GeneratedValue @Id
private Long id;
...
@Entity
@DiscriminatorValue("TEST")
public class Album extends Item{
private String artist;
}
...
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)