DTYPE
🏷 DTYPE
정의
DTYPE은 JPA 상속 매핑에서 어떤 자식 엔티티인지 구분하기 위해 사용하는 디스크리미네이터 컬럼이다. 주로SINGLE_TABLE전략에서 사용되며, 한 테이블에 저장된 여러 엔티티의 타입을 식별한다.
DTYPE 값은 부모 엔티티와 자식 엔티티를 구분하는 데 사용된다.
🧩 역할
- 상속 테이블에서 엔티티 타입을 구분한다
- SINGLE_TABLE 전략에서 자주 사용된다
- 자식 엔티티를 문자열 또는 별도 값으로 식별할 수 있게 한다
- 조회 시 어떤 타입으로 매핑할지 결정하는 기준이 된다
🛠 사용법
부모 엔티티에 구분 컬럼 지정
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Item {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
자식 엔티티에 구분 값 지정
@Entity
@DiscriminatorValue("SWORD")
public class Sword extends Item {
}
@Entity
@DiscriminatorValue("AXE")
public class Axe extends Item {
}
🧩 다른 상속 전략과의 관계
SINGLE_TABLE
- DTYPE을 주로 사용한다
- 하나의 테이블에 여러 엔티티가 함께 저장된다
JOINED
- 보통
DTYPE이 필수는 아니다 - 부모와 자식 테이블을 조인해서 조회한다
TABLE_PER_CLASS
- 보통
DTYPE이 필수는 아니다 - 각 엔티티가 별도 테이블을 가진다
⚠️ 주의사항
DTYPE은 개념적으로는 디스크리미네이터 컬럼을 뜻한다.- 실제 컬럼명은
@DiscriminatorColumn으로 제어한다. SINGLE_TABLE에서 가장 자주 사용된다.- 상속 전략을 바꾸면
DTYPE의 필요 여부도 달라질 수 있다.
📌 정리
DTYPE은 JPA 상속 구조에서 엔티티 타입을 구분하는 컬럼이다.- 주로
SINGLE_TABLE전략에서 사용한다. @DiscriminatorColumn,@DiscriminatorValue와 함께 이해하면 쉽다.
댓글남기기