본문 바로가기

Web/JPA

고급매핑

* 상속 관계 매핑

 - 데이터 베이스엔 상속관계가 없다

 - 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑

 

 //부모 클래스	조인전략
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name=“DTYPE”)
 //자식 클래스
@DiscriminatorValue(“XXX”)

 //부모 클래스	단일 테이블 전략
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name=“DTYPE”)
 //자식 클래스
@DiscriminatorValue(“XXX”)

//부모 클래스	구현 클래스마다 테이블 전략
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

* 테이블 별 장단점

 - 조인

  장점 : 테이블 정규화

          외래키 참조, 무결성 제약조건 활용가능

          저장공간 효율화

  단점 : 조회시 조인을 많이 사용 → 성능저하

          쿼리가 복잡해짐

          데이터 저장시 insert 2번 호출

 

 - 단일 테이블

   장점 : 조인X , 성능빠름 , 조회쿼리 단순

   단점 : 데이터가 들어간 자식 빼곤 다 Null 허용

           한 테이블에 다 때려박기 때문에 상황에 따라서 조회 성능이 오히려 느려질 수 있다.

 

 - 구현 클래스마다 테이블 (실무에서 사용하면 안됨)


* @MappedSuperClass

 - 상속 관계 매핑 아님

 - 공통 매핑 정보가 필요할 때 사용 (중복 변수)

         ex) String id; String name;

 - 엔티티 X , 테이블과 매핑 X

 - 조회, 검색 불가 (em.find(BaseEntity))

 - 직접 생성해서 사용할 일이 없으므로 추상 클래스 권장

'Web > JPA' 카테고리의 다른 글

Spring Data JPA 페이징  (0) 2020.02.17
API 고급( 지연로딩과 조회성능 최적화)  (0) 2020.02.13
다양한 연관관계 매핑  (0) 2020.02.02
연관관계 매핑 기초  (0) 2020.02.01
엔티티 매핑  (0) 2020.01.31