JPA

[JPA 15] 상속관계 구현 - 싱글 테이블(통합 테이블) 전략

snowkit 2022. 3. 11. 04:28
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public abstract class Item {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private int price;
}
@Entity
public class Book extends Item {
    private String author;
    private String isbn;
}
@Entity
public class Shoes extends Item {
    private int size;
}
  • @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
  • 슈퍼타입 테이블과 서브타입 테이블을 전부 통합한 뒤 DiscriminatorColumn으로 구분한다
  • 단점
    • 서브타입 테이블은 전부 null을 허용해야 한다
    • 필요없는 컬럼을 구분하기 힘들 수 있다
    • 단일 테이블에 모든 데이터를 저장하기 때문에 테이블이 커질 수 있다