**Item 테이블을 상속받아야 하는 Movie테이블과 Clothes테이블이 있다고 가정 합니다.
@Inheritence(strategy(InheritaceType.JOINED)
//@Inheritence(strategy(InheritaceType.SINGLE_TBLE)
//@Inheritence(strategy(InheritaceType.TABLE_PER_CLASS)
@DiscriminatorColumn(name=“DTYPE”)
public class Item{
@Id @GeneratedValue
@Column(name="item_id")
private Long id;
private int price;
}
Movie Entity
@DiscriminatorValue("M")
public class Movie extends Item{
private String movieName;
private String actor;
}
Clothes Entity
@DiscriminatorValue("C")
public class Clothes extends Item{
private String sorts;
}
상속받는 객체들을 각각 테이블로 만드는 전략. 상속 받는 객체들이 외래 키를 관리하게 되며 외래 키를 활용하여 서로 Join하며 참조 가능.
위 그림과 같은 테이블 형식!
상속 받는 객체들의 테이블을 따로 따로 만들지 말고 한 테이블에 모든 데이터를 몰아 넣는 전략.
위 그림과 같이 모든 데이터를 한 테이블이 갖게 됨.
구현된 클래스 마다 전부 테이블을 만들어 관리
이 전략은 추천 X!!!
물론 한 클래스마다 하나의 테이블을 갖고 있으니 명확하게 처리 및 not null 제약 조건과 같은 것을 사용할 수 있습니다.
But, 외래 키가 없기 때문에 여러 자식 테이블을 함계 조회하기 어려움. 즉, 하나로 통합해서 사용하기 어렵다는 뜻.
이는 치명적인 단점!!
이 글은 인프런 김영한님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편'을 수강하고 작성합니다.
출처:https://www.inflearn.com/course/ORM-JPA-Basic