상속관계 매핑 - 단일테이블 전략

PPakSSam·2022년 1월 9일
0
post-thumbnail

상속관계 매핑 목차


단일테이블 전략

[Item]

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public class Item {

    @Id @GeneratedValue
    private Long id;
    
    private String name;
    private int price;
}   

[Album]

@Entity
@DiscriminatorValue("ALBUM")
public class Album extends Item {
	
    private String artist;
}

[Movie]

@Entity
@DiscriminatorValue("MOVIE");
public class Movie extends Item {
	
    private String director;
    private String actor;
}

[JpaMain]

Movie movie = new Movie();
movie.setDirector("aaaaa");
movie.setActor("bbbb");
movie.setName("바람과 함께 사라지다");
movie.setPrice(10000);

em.persist(movie);

  • @Inheritance(strategy = InheritanceType.SINGLE_TABLE) : 단일테이블 전략 실행
  • @DiscriminatorColumn : 테이블에 DTYPE이라는 컬럼 생성
  • @DiscriminatorValue : DTYPE 값으로 어떤 값이 들어갈지 명시

장점

  • 조인이 필요없으므로 일반적으로 조회 성능이 빠르다.
  • 조회 쿼리가 단순하다.

단점

  • 자식 엔티티가 매핑한 컬럼은 모두 NULL을 허용한다.
  • 단일 테이블에 모든 것을 저장하므로 테이블이 커질 수 있다.
  • 상황에 따라서 조회성능이 오히려 느려질 수 있다.
profile
성장에 대한 경험을 공유하고픈 자발적 경험주의자

0개의 댓글