JPA - 조인 전략을 사용한 상속 매핑
- 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없음
- 그러나 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 유사
- 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것
- 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때 3가지 방법을 선택
- 각각의 테이블로 변환
- 통합 테이블로 변환
- 서브타입 테이블로 변환
- 조인 전략은 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래키로 사용하는 전략
- 특징
- 조회할때 조인을 자주 사용
- 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없음
- 타입을 구분하는 컬럼 추가

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "dtype")
public class Vehicle {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String manufacturer;
}
@Entity
@DiscriminatorValue("CAR")
public class Car extends Vehicle {
private int numberOfSeats;
}
@Entity
@DiscriminatorValue("BOAT")
public class Boat extends Vehicle {
private double length;
}
@Entity
@DiscriminatorValue("BICYCLE")
public class Bicycle extends Vehicle {
private boolean hasBasket;
}