Home [JPA] JPA 기본 7
Post
Cancel

[JPA] JPA 기본 7

JPA 기본 7

상속관계 매핑

상속관계 매핑이란?

  • 관계형 데이터베이스는 상속 관계가 없다.
  • 객체에는 상속 관계가 있는데, 관계형 DB에서 그나마 상속 관계와 비슷한 것은 슈퍼타입, 서브타입 관계 모델링 기법이다.
  • 즉, 객체의 상속 구조와 DB의 슈퍼타입, 서브타입 관계를 매핑하는 것을 말한다.

조인 전략

  • 각각 테이블로 변환한다.
  • strategy = InheritanceType.JOINED
  • 장점 : 테이블 정규화 되어 있다, 외래 키 참조 무결성 제약조건 활용이 가능하다, 저장공간이 효율화 되어 있다.
  • 단점 : 조회 시 조인을 많이 사용해 성능 저하된다, 조회 쿼리가 복잡하다, 데이터 저장 시 INSERT 쿼리가 2번 호출된다.

단일 테이블 전략

  • 통합 테이블로 변환한다.
  • JPA의 기본 전략이다.
  • 장점 : 조인이 필요 없어 조회가 빠르다, 조회 쿼리가 단순하다.
  • 단점 : 자식 엔티티가 매핑한 컬럼은 모두 null이 허용되어야 한다, 단일 테이블에 저장하니 크기가 커지면 오히려 조회 성능이 떨어질 수 있다.

구현 클래스마다 테이블 전략

  • 서브타입 테이블로 변환한다.
  • 쓰면 안되는 전략이다.
  • 장점 : 서브 타입을 명확하게 구분해서 처리 시 효과적이다, not null 제약조건 사용이 가능하다.
  • 단점 : 여러 자식 테이블 조회 시 성능이 떨어진다(UNION 쿼리를 날려야 함), 자식 테이블을 통합해서 쿼리하기 어렵다.

@DiscriminatorColumn(name=”DTYPE”)

  • 클래스에 해당 애너테이션을 붙여 DB에 DTYPE을 추가한다.

@DiscriminatorValue(“val”)

  • 클래스에 해당 애너테이션을 붙여 DB에 val이란 이름의 DTYPE을 추가한다.

@MappedSuperclass

  • 공통 매핑 정보가 필요할 때 사용한다.(id, name)
  • 상속관계 매핑이 아니다.
  • 엔티티가 아니고, 테이블과 매핑되지 않는다.
  • 부모 클래스를 상속받는 자식 클래스에 매핑 정보만 제공한다.
  • 조회나 검색이 불가하다.
  • 직접 생성 및 사용할 일이 없으니 추상 클래스 사용을 권장한다.
This post is licensed under younghwani by the author.

[JPA] JPA 기본 6

[JPA] JPA 기본 8

Comments powered by Disqus.