본문 바로가기

웹 프로그래밍/JPA

고급 매핑

상속관계 매핑

-RDB는 상속관계 X

-슈퍼타입 서브타입 관계라는 모델링 기법이 객체상속과 유사하므로 매핑

 

상속관계 매핑 전략

-조인 전략(정석)

    -각각 테이블로 변환 

    -@Inheritance(strategy = InheritanceType.JOINED)

    -@DiscriminatorColumn (DTYPE 식별자 자동추가)

    -장점: 정규화, 외래키 참조 무결점 제약조건 활용(ITEM만 보면됨), 저장공간 효율화

    -단점: 조인이 많이사용, 쿼리 많이 나감

 

-통합 테이블전략(싹 다 넣음): 단순할때 좋음

    -기본값임(@Inheritance(strategy = InheritanceType.SINGLE_TABLE))

    -DTYPE 필수(식별)

    -장점: 조인필요없음(빠름), 쿼리가 단순함

    -단점: 자식 엔티티가 매핑한 컬럼은 null을 허용해야함, 테이블 과도하게 커짐

 

-구현 클래스마다 테이블 전략(중복 데이터부분 그냥 다 갖게함): 안쓴다

    -부모 클래스를 추상 클래스로 만듬(abstract)

    -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

    -부모 클래스로 조회할경우 모든 테이블을 뒤져야 함(비효율)

    

 

@MappedSuperclass

-공통 매핑 정보가 필요할때 사용

-상속관계 매핑은 아니고 공통 속성을 쓰고 싶을때(등록일, 수정일, 등록자, 수정자 등등)

 

'웹 프로그래밍 > JPA' 카테고리의 다른 글

즉시로딩과 지연로딩  (0) 2023.03.04
프록시  (1) 2023.03.04
연관관계 매핑 기초  (0) 2023.03.03
엔티티 매핑  (0) 2023.03.02
영속성 관리  (0) 2023.02.28