@Inheritance
기본값이 SINGLE_TABLE
이다.
이를 JOINED
로 바꿔주면 조인 전략으로 바뀐다.
이와 같이 extends
를 통해 엮어준다.
싱글 테이블일때
조인일때
여기서 추가로,
@DiscriminatorColumn
어노테이션을 추가로 넣으면
extends
로 받은 자식엔티티들을 DTYPE
으로 구분이 가능하다.
참고로 DTYPE
의 이름을 각각 따로 설정해주고 싶다면,
Movie, Book
등의 엔티티에
@DiscriminatorValue("설정하고 싶은 이름")
을 추가하면 된다.
모든 자식 테이블을 한곳에 합치는 전략.
구분하기 위해 DTYPE
이 필수다.
JOIN을 쓰지 않기 때문에 간편해 보이지만,
어딘가 나사빠져 보이는 구조.
Item
테이블을 없애고 해당 컬럼들(item_id
, name
, price
)를 전부 밑으로 내려서 처리
사용하기 용이해보이나, find로 찾을때 모든 테이블을 다 뒤져야하는 불편함이 있음.
@Inheritance(strategy=InheritanceType.XXX)
@DiscriminatorColumn(name="DTYPE")
@DiscriminatorValue("XXX")