본문 바로가기
JPA

[JPA] @Inheritance , @DiscriminatorValue, @DiscriminatorColumn 전략

by onejunu 2020. 8. 6.

설명에 앞서 테이블을 정의해 보자.

 

상속관계의 매핑을 위한 3가지 방법이 있다.

 

1.JOINED

2.SINGLE_TABLE

3.TABLE_PER_CLASS

 

 

1. JOINED

@Inheritance(strategy = InheritanceType.JOINED) 

이는 가장 정규화된 테이블로 관리를 해준다.

조회할때 항상 조인해서 가져오기 때문에 성능이 떨어지지만, 그외 저장효율이나 유지보수가 용이하다.

@DIscriminatorColumn이 디폴트가 아니지만 설정해 주는 것이 좋다.

 

 

 

2. SINGLE_TABLE

이는 하나의 테이블에 모든 속성을 다 집어넣는다. 조회에서 좋은 성능을 보인다. 단순한 상속관계에서 주로 많이 쓴다.

또한 DiscriminatorColumn 이 기본으로 깔려서 들어간다.

 

 

 

3.TABLE_PER_CLASS

거의 사용하지않는다. 특정 엔티티 조회에서 편하긴 하나.. 유지보수가 매우 어렵다.

 

 

댓글