728x90
슈퍼타입 서브 타입 놀리 모델을 실제 물리 모델로 구현하는 방법
1.조인 전략
장점
테이블 정규화
외래키 참조 무결성 제약조건 활용가능
단점
조회시 조인을 많이 사용, 성능 저하
조회 쿼리가 복잡함
데이터 저장시 insert sql 2번 호출
2.단일 테이블 전략
장점
조인이 필요 없으므로 일반적으로 조회 성능이 빠름
조회 쿼리가 단순함
단점 자식 엔티티가 매핑한 컬럼은 모드 null 허용
단일테이블에 모든 것을 저장하므로 테이블이 커질 수 있다.
# JPA 기본정책은 단일 테이블 전략이다
3.구현 클래스마다 테이블 전략
장점
서브 타입을 명확하게 구분해서 처리할 때 효과적
Not null 제약조건 사용 가능
단점
여러 자식 테이블을 함께 조회할 때 성능이 느림
자식 테이블을 통합해서 쿼리하기 어려움
슈퍼타입에 어떤 서브타입을 가지고 있는지 확인하는 컬럼 명 (default="DTYPE")
@DiscriminatorColumn(name="DTYPE")
슈퍼타입에 서브타입을 어떻게 저장할건지 설정 (default="클래스 이름")
@DiscriminatorValue("XXX")
728x90
'백엔드 > Spring(Boot)' 카테고리의 다른 글
JPA 영속성 전이(cascade) (0) | 2021.09.03 |
---|---|
JPA 영속성 전이(cascade) (0) | 2021.09.01 |
JPA 엔티티에서 엔티티를 속성으로 가지는 경우 (0) | 2021.08.27 |
JPA 필드와 컬럼 매핑 (0) | 2021.08.26 |
JPA 엔티티 생성시 테이블 명 및 칼럼 명 변경 (0) | 2021.08.25 |