Spring/JPA

태태개발일지 - JPA 슈퍼타입

태태코 2024. 11. 20. 17:42
반응형

 

슈퍼타입 서브타입 논리모델

 

객체는 상속을 지원하므로 모델링과 구현이 똑같지만, DB는 상속을 지원하지 않아서, 논리 모델을 물리 모델로 구현할 방법이 필요.

 

DB의 슈퍼타입 서브타입 논리모델을 실제 물리 모델로 구현하는 방법은

1. join

2. singleTable

3. tablePerClass

 

들어가야하는 어너테이션 종류

 

JPA가 이 세가지 방식과 매핑하려면

  • @Inheritance(strategy=InheritanceType.XXX).
    • default 전략은 SINGLE_TABLE
    • InheritanceType 종류
      • JOINED
      • SINGLE_TABLE
      • TABLE_PER_CLASS
  • @DiscriminatorColumn(name="DTYPE")
    • 부모 클래스에 선언한다. 하위 클래스를 구분하는 용도의 컬럼이다. 관례는 default = DTYPE
  • @DiscriminatorValue("XXX")
    • 하위 클래스에 선언한다. 엔티티를 저장할 때 슈퍼타입의 구분 컬럼에 저장할 값을 지정한다.
    • 어노테이션을 선언하지 않을 경우 기본값으로 클래스 이름이 들어간다.

 

 

 

간략하게 설명하자면,

1. join 부분은 실제로 상속을 구현하고 join해서 사용한다. 

2. 부모클래스 하나에 모든 속성을 다 넣고 DTYPE을 통해서 구별하여 사용한다.

3. 부모클래스를 없애고 자식클래스만 만들어서 join하여 사용한다. -> 잘 사용하지 않는다.

 

 

반응형

'Spring > JPA' 카테고리의 다른 글

태태개발일지 - JPA PK Key  (0) 2024.12.03
태태개발일지 - 양방향 연관관계  (1) 2024.11.22
태태개발일지 - ActionQueue  (3) 2024.11.18
태태개발일지 - ManyToMany  (2) 2024.11.15
태태개발일지 - OneToOne  (0) 2024.11.15