고급 매핑

이승주·2024년 8월 9일

이 블로그는 https://www.inflearn.com/course/lecture?courseSlug=ORM-JPA-Basic&unitId=21712&tab=curriculum 이 강의를 듣고 내용을 정리한 글입니다.


상속관계 매핑

  • 관계형 데이터베이스는 상속 관계x
  • 슈퍼타입 서브타입 관계는 모델링 기법이 객체 상속과 유사하다.
  • 상속관계 매핑: 객체의 상속과 구조와 db의 슈퍼타입,서브타입 관계를 매핑하는 것을 말한다.

    슈퍼 타입,서브 타입 논리 모델을 실제 물리 모델로 구현하는 방법
    1.각각 테이블로 변환 -> 조인 전략
    2.통합 테이블로 변환 -> 단일 테이블 전략
    3.서브 타입 테이블로 변환 -> 구현 클래스마다 테이블 전략

주요 어노테이션

  • @Inheritance(strategy = InheritanceType.XXX)
  • JOINED:조인 전략
  • SINGLE_TABLE: 단일 테이블 전략
  • TABLE_PER_CLASS: 구현 클래스마다 테이블 전략

조인 전략


장점: 테이블 정규화, 외래 키 참조 무결성 제약조건 활용가능
단점: 조회시 조인을 많이 사용, 성능 저하, 조회 쿼리가 복잡, 데이터 저장시 insert sql 2번 호출

단일 테이블 전략


장점: 조인이 필요없어 조회성능이 빠름
단점: 자식 엔티티가 매핑한 컬럼은 모두 null 허용, 단일 테이블에 모든 것을 저장하므로 테이블이 커질 수 있음. 상황에 따라서 조회 성능이 오히려 느려질 수 있다.

구현 클래스마다 테이블 전략


이 전략은 데이터베이스 설계자와 ORM 전문가 둘 다 추천X
장점: 서브타입을 명확하게 구분해서 처리할 때 효과적, not null 제약조건 사용가능
단점: 여러 자식 테이블을 함께 조회할 때 성능이 느림, 자식 테이블을 통합해서 쿼리하기 어려움


MappedSuperclass


상속관계 매핑x
엔티티x,테이블과 매핑x
부모 클래스를 상속받는 자식 클래스에 매핑 정보만 제공
조회, 검색불가
직접 생성해서 사용할 일이 없으므로 추상 클래스 권장
-->테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할

profile
백엔드개발자가 되고싶습니다.

0개의 댓글