상속관계 매핑

UkJJang·2021년 10월 12일
0

인프런 김영한 님의 강의를 보면서 학습 하였습니다.

상속관계 매핑

  • 관계형 데이터베이스는 상속관계가 없다.
  • 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다.
  • 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입, 서브타입 관계를 매핑

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

조인전략 > 각각 테이블로 변환 [거의 정석]

  • 장점
  1. 테이블 정규화
  2. 외래키 참조 무결성 제약조건 활용 가능
  3. 저장공간 효율화
  • 단점
  1. 조회 시 조인을 많이 사용하여 성능이 저하된다.
  2. 조회 쿼리가 복잡하다.
  3. 데이터 저장시 Insert 쿼리 2번 호출

단일 테이블 전략 > 통합 테이블로 변환

  • 장점
  1. 조인이 필요 없기때문에 조회 속도가 빠르다.
  2. 조회 쿼리가 단순하다.
  • 단점
  1. 자식 엔티티가 매핑한 컬럼은 모두 null허용
  2. 테이블 하나에 저장하기 때문에 상황에 따라 오히려 성능이 저하될 수 있다.

구현 클래스마다 테이블 전략 > 서브타입 테이블로 변환

  • 장점
  1. 서브타입 구분을 명확하게 해서 처리할 때 유용함
  2. not null 제약조건 사용가능
  • 단점
  1. 여러 자식이 테이블을 함께 조회해 성능이 느림
  2. 자식 테이블을 통합해서 쿼리하기 어려움

주요 어노테이션

  • @Inheritance(strategy=InheritanceType.XXX)
    1. JOINED : 조인전략
    2. SINGLE_TABLE: 단일테이블 전략
    3. TABLE_PER_CALSS : 구현 클래스마다 테이블 전략
  • @DiscriminatorCoulmn(name="DTYPE")
  • @DiscriminatorValue("XXX")

@MappedSuperclass

  • 공통 매핑 정보가 필요할 때 사용한다.(id, name)
profile
꾸준하게 성실하게

0개의 댓글