JPA
1월 30일 JPA 고급매핑 단일 테이블 전략
Chaerin Yoo
2023. 1. 30. 17:14
고급매핑 단일 테이블 전략
한 테이블에 모든 자식 데이터 , 컬럼을 넣고 Dtype(discriminator)로 구별하는 전략을 말한다.
@Entity
@Inheritance(strategy = Inheritance , SINGLE_TABLE)
@DiscriminatorColumn
public class Item
부모에 이렇게 값을 넣게 되면 자식들은 부모를 extends 받지 않고
모든 컬럼이 Item에 들어가게 되고
Insert한 자식객체에 해당하지 않는 데이터는 null이 들어가게 된다.
Join처럼 insert가 2번 일어나지도 않고 select로 join없이 조회도 가능하다.
또한 단일 테이블 전략은 DiscriminatorColumn이 없어도 최소한의 구별이 위해
기본적으로 Dtype컬럼이 생성된다.
Dtype는 운영상 항상 있어주는게 좋다.
JPA의 큰 장점중 하나로 위 같은 전략변경을
@Inheritance(strategy = InheritanceType.~)
위 어노테이션의 값을 바꾸는것으로 쉽게 변경 / 구현이 가능하다.
또한 DB수정이 필요가 없게된다.