인프런 강의 < 자바 ORM 표준 JPA 프로그래밍 - 기본편 > 정리
슈퍼타입 서브타입 관계 라는 모델링 기법이 있다.
슈퍼타입 논리 모델을 물리 모델인 테이블로 구현하는 방법인 3가지가 있다.
1. 각각의 테이블로 변환
- jpa에서는 조인 전략이라고 부르며, 엔티티 각각을 모두 테이블로 만든다.
- 자식 테이블이 부모 테이블의 기본 키를 받아 PK + FK로 사용한다.
- 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없어서 타입을 구분하는 컬럼을 추가해야 한다.

#### 장점
- 테이블이 정규화 된다.
- 외래 키 참조 무결성 제약조건을 활용할 수 있다.
- 저장공간을 효율적으로 사용
#### 단점
- 조회할때 조인이 많이 사용돼서 성능 저하가 우려된다.
- 조회 쿼리가 복잡하다.
- 데이터를 등록할 INSERT SQL을 두번 실행한다.
통합 테이블로 변환
단일 테이블 전략이라고 부른다DTYPE으로 어떤 자식 데이터가 저장되어 있는지 구분한다.
구현 클래스마다 테이블 전략이라고 부르며 자식 엔티티마다 테이블을 만든다.
@Inheritance
@DiscriminatorColumn(name = "DTYPE")
DTYPE이므로 생략해도 된다.@DiscriminatorValue("M")
**이 방법으로는 하지 않는다!**
@Entity는 실제 매핑 되지만 @MappedSuperclass는 실제 테이블과 매핑되지 않고 단순히 매핑 정보를 상속할 목적으로만 사용한다.
@MappedSuperclass
public abstract class BaseEntity {
@Id @GeneratedValue
private Long id;
private String name;
}
public class Member extends BaseEntity {
}
public class Seller extends BaseEntity {
}
< 자료 출처: 자바 ORM 표준 JPA 프로그래밍 - 기본편 >