[TIL] JPA 객체 상속 DB 맵핑 전략

정석·2024년 8월 28일

TIL

목록 보기
29/40
post-thumbnail


이와 같이 Item 이라는 부모 클래스를 상속받는 각각의 자식 클래스가 존재할 때 DB 맵핑을 어떻게 해야할까?
총 3가지의 전략이 존재한다.

모든 전략은 @Ingeritance 어노테이션을 통해 구분된다.

1. 조인 전략

  • 자바에서 클래스를 상속 받는 형식과 제일 비슷한 방식으로 조인을 통해 각 테이블을 연결시켜준다.

  • InheritanceType.JOINED 설정을 사용하고 결과는 아래와 같이 DTYPE 이라는 칼럼이 생기는데
    이를 통해 어떤 자식 테이블에서 생성된 건지 알 수 있다.

장점

  • 테이블 정규화
  • 저장공간 효율화

단점

  • 데이터 저장시 Insert 쿼리 2번 호출
  • Join 사용 증가

2. 단일 테이블 전략

  • InheritanceType.SINGLE_TABLE 로 선언한다.
  • 말 그대로 한 테이블에서 모든 자식테이블의 값들이 관리된다.

장점

  • Join 필요 없음

단점

  • null 값 허용

3. 구현 클래스 테이블 전략

실무 사용 X

  • InheritanceType.TABLE_PER_CLASS 로 선언한다.
  • 상속된 자식 클래스들에 대한 각자의 테이블이 생성되는 방식

0개의 댓글