상속관계 매핑 -
- 3가지 종류가 있음 - 조인전략, 단일 테이블 전략, 구현 클래스마다 테이블 전략
- 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사
- RDB에는 없음
@Entity
@Inheritance(전략은 고를 수 있음)
public abstract class Item {
@Id
@GeneratedValue
private Long id;
private String name;
private int price;
}
@Entity
public class Album extends Item {
private artist;
}
위의 엔티티로 예시
조인전략
조인 전략 -- 정석적인 전략
@Inheritance(strategy = InheritanceType.JOINED) //이거 없으면 그냥 한 테이블에 다 생김
@DiscriminatorColumn // Dtype 생성 - album?movie?
- @DiscriminationValue를 album에 넣어서 Dtype을 변경 가능
장점: 정규화, 저장 공간 효율화
단점: 조인 많이 사용, 성능 저하
단일 테이블 전략
단일 테이블 전략
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) //단일 테이블 전략
@DiscriminatorColumn //Dtype 생성 꼭 필요
한 테이블에 모두 생성
쿼리가 간단함 - 성능상 좋음
단점: 엔티티가 매핑한 컬럼은 모두 null 허용, 크기가 커지면 성능이 안좋아질 수 있음
구현 테이블 전략
구현 클래스마다 테이블 전략
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) //구현 테이블 마다 -- Item테이블이 안생김
데이터를 조회할 경우 쿼리가 매우 복잡함
@MappedSuperclass
- BaseEntity
- 추상 클래스 권장
- 엔티티 X, 테이블과 매핑 X
- 자식 클래스에 매핑정보만 제공
- 검색 불가
보통 아래처럼 많이 사용함
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity {
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
'spring boot > JPA - 기본' 카테고리의 다른 글
JPA - cascade, orphanRemoval (0) | 2021.11.21 |
---|---|
JPA - proxy(프록시) (0) | 2021.11.13 |
JPA - 연관관계 매핑(2) (0) | 2021.11.08 |
JPA - 연관관계 매핑 (0) | 2021.10.26 |
jpa - 엔티티 매핑 (0) | 2021.10.21 |