Hansel

6. JPA와 상속관계 매핑 본문

JPA/기초

6. JPA와 상속관계 매핑

핑슬 2022. 2. 9. 11:49

자바나 객체지향 언어에는 상속관계가 존재한다.

부모가 자식을 물려받아 다양한 메서드와 필드를 사용하고 다형성을 이용해 많은 이점을 누릴 수 있다.

 

하지만 그 개념을 DB에는 상속관계는 존재하지 않는다. 따라서 그 개념을 유사한 개념인 슈퍼타입과 서브타입으로 매핑시켜줘야 한다.

 

 조인 전략 @Inheritance(strategy = InheritanceType.JOINED)

여기 Item 이라는 엔티티가 있다. 이 엔티티는 책, 앨범 등의 다양한 자식을 가진다.

조인전략은 객체지향의 상속관계와 가장 유사한 방법이며 각 자식마다 테이블을 가지도록 한다.

 

조인 전략의 장점

  1. 테이블의 정규화
  2. 외래키 참조 무결성 조건 활용
  3. 저장 공간 효율화

조인 전략의 단점

  1. 조회시 많은 조인이 사용
  2. 조회 쿼리가 복잡
  3. 데이터 저장시 insert 쿼리가 한번이 아님
단일 테이블 전략 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)

이 방법은 물리데이터 모델링을 할 때 슈퍼타입 기준 테이블 변환 방법이다.

서브타입을 슈퍼타입에 통합하여 하나의 테이블을 만드는 전략이다.

주로 서브타입에 적은 양의 속성이나 관계를 가진 경우에 적용된다.

 

 

단일 테이블 전략의 장점

  1. 조인이 필요 없다. => 성능이 좋다.
  2. 조회 쿼리가 단순하다.

단일 테이블 전략의 단점

  1. 자식 엔티티가 매핑한 컬럼은 모두 null을 허용한다.
  2. 테이블이 너무 커질수도 있다.

 

 

'JPA > 기초' 카테고리의 다른 글

11. JPA와 값타입  (0) 2022.02.15
10. JPA와 영속성 전이  (0) 2022.02.10
9. JPA와 즉시 로딩 & 지연 로딩  (0) 2022.02.10
8. JPA와 프록시  (0) 2022.02.10
7. JPA와 MappedSuperclass  (0) 2022.02.09