이 학습 자료는 김영한님의 인프런 강의를 참고해서 만들었습니다.
1. 상속관계 매핑
- 관계형 데이터베이스는 상속 관계X → 슈퍼타입 - 서브타입 관계가 상속과 유사
- 즉, 상속관계 매핑이란 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것을 의미한다.
1.1 슈퍼타입 서브타입 관계 모델링 방법
@Inheritance(strategy = InheritanceType.XXX)
JOINED
: 조인 전략SINGLE_TABLE
: 단일 테이블 전략TABLE_PER_CLASS
: 구현 클래스마다 테이블 전략
@DiscriminatorColumn(name = "DTYPE")
: 조상 클래스에 붙이는 어노테이션으로, 사용하면 DTYPE 테이블이 생성되고, 자식 클래스의 이름으로 등록된다.@DiscriminatorValue("XXX")
: 자식클래스에 붙이는 어노테이션으로, 사용하면 XXX값으로 이름이 등록된다.
1.1.1 조인 전략
- 장점
- 테이블의 정규화
- 외래 키 참조 무결성 제약조건 활용 가능
- 저장공간 효율화
- 단점
- 조회시 조인을 많이 사용하기 때문에 성능이 저하됨
- 조회 커리가 복잡함
- 데이터 저장시 INSERT SQL이 2번 호출된다.
1.1.2. 단일 테이블 전략
- 장점
- 조회 성능이 빠르고, 쿼리가 단순함
- 단점
- 자식 엔티티가 매핑한 컬럼은 모두 null이 허용된다.
- 테이블이 커지면 조회 성능이 저하된다.
1.1.3. 구현 클래스마다 테이블 전략
- 추천하지 않는 전략
- 장점
- 서브 타입을 명확하게 구분해서 처리할 때 효과적
- not null 제약조건 사용가능
- 단점
- 여러 테이블을 함께 조회할 때 성능이 느림
- 자식 테이블을 통합해서 쿼리하기 어려움
2. @MappedSuperclass
- 전체 엔티티에서 공통으로 적용하는 매핑 정보가 필요할 때 사용(ex) id, name)
- 상속관계 매핑X, 테이블과 매핑X, 엔티티X
- 상속 받는 자식 클래스에 매핑 정보만 제공
- 조회, 검색 불가(
em.find()
X) - 추상 클래스 권장
'ORM > JPA' 카테고리의 다른 글
자바 ORM 표준 JPA 프로그래밍 - 값 타입 (0) | 2021.08.21 |
---|---|
자바 ORM 표준 JPA 프로그래밍 - 프록시와 연관관계 관리 (0) | 2021.08.19 |
자바 ORM 표준 JPA 프로그래밍 - 다양한 연관관계 매핑 (0) | 2021.08.15 |
자바 ORM 표준 JPA 프로그래밍 - 연관관계 매핑 기초 (0) | 2021.08.12 |
자바 ORM 표준 JPA 프로그래밍 - 엔티티 매핑 (0) | 2021.08.10 |