@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을 허용해야 한다
- 필요없는 컬럼을 구분하기 힘들 수 있다
- 단일 테이블에 모든 데이터를 저장하기 때문에 테이블이 커질 수 있다