조인 전략
장점은 테이블 정규화, 저장공간 효율, 외래키 참조 무결성 제약조건 활용이 가능하다.
단점은 조회할때 조인을 많이 사용해 성능이 저하된다는 점과 조회 쿼리가 복잡하다. 데이터저장시에 insert쿼리를 2번이나 호출한다.
사용법
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public class Item {
InheritanceType을 JOINED로 설정하면 된다.
이상태로 실행하면 내가 만든 Item하위 엔티티들이 하나씩 생성된다.
아래는 실행결과값이다.
create table Album (
artist varchar(255),
id bigint not null,
primary key (id)
)
create table Book (
author varchar(255),
isbn varchar(255),
id bigint not null,
primary key (id)
)
create table Movie (
actor varchar(255),
director varchar(255),
id bigint not null,
primary key (id)
)
다음은 단일 테이블 전략
장점은 조인이 필요없어 일반적으로조회 성능이 빠르다.
조회 쿼리가 단순하다.
단점은 자식 엔티티가 매핑한 컬럼은 모두 null을 허용한다.
단일 테이블에 모든 것을 저장하므로 테이블이 커질 수 있다. 상황이따라서 조회 성능이 오히려 느려질수 있음.
사용법은
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public class Item {
InheritanceType만 SINGLE_TABLE로 바꿔주었다.
아래는 결과 값이다.
create table Item (
DTYPE varchar(31) not null,
id bigint not null,
name varchar(255),
price integer not null,
artist varchar(255),
author varchar(255),
isbn varchar(255),
actor varchar(255),
director varchar(255),
primary key (id)
)
조인과 다르게 하나의 테이블에 다 뭉쳐있게 생성 되었다.
그리고 insert쿼리도 한번만 일어났고 조인문도 없었다.
'JPA' 카테고리의 다른 글
Join Fetch (0) | 2022.10.21 |
---|---|
Embedded Type (0) | 2022.10.19 |
mappedBy (0) | 2022.10.18 |
IDENTITY전략 (0) | 2022.10.17 |
영속 컨텍스트 (1) | 2022.10.15 |