설명에 앞서 테이블을 정의해 보자.
상속관계의 매핑을 위한 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
거의 사용하지않는다. 특정 엔티티 조회에서 편하긴 하나.. 유지보수가 매우 어렵다.
'JPA' 카테고리의 다른 글
[JPA] CASCASDE 옵션 & orphanRemoval (0) | 2020.08.06 |
---|---|
[JPA] 프록시 (Proxy) 객체 & fetch = EAGER & LAZY (0) | 2020.08.06 |
[JPA] @MappedSuperClass 란? (0) | 2020.08.06 |
[JPA] @ManyToOne , @OneToMany, @JoinColumn (0) | 2020.08.06 |
[JPA] @Id, @GenerateValue 의 전략 (0) | 2020.08.06 |
댓글