@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Item {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
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.TABLE_PER_CLASS)
@GeneratedValue(strategy = GenerationType.???)
에 IDENTITY 사용 불가
- 서브타입 테이블에 각각 슈퍼타입 테이블의 컬럼을 생성한다
- 슈퍼타입 테이블이 존재하지 않는다
- 단점
- 얼핏 편리해 보일 수 있지만 DBA와 ORM 전문가가 전부 추천하지 않는 전략
- 여러 자식 테이블을 함께 조회할 때 성능이 느림 (UNION SQL 필요)
- 자식 테이블을 통합해서 쿼리하기 어려움