DB/JPA

[JPA] @MappedSuperclass

꾸준함. 2021. 9. 7. 00:50

개요

사내 컨벤션으로 테이블마다 공통적으로 필요한 매핑 정보가 있을 수 있습니다.

예를 들자면, 데이터 생성 정보 혹은 데이터 수정 정보 같은 경우 운영할 때 필수적으로 필요한 정보이기 때문에 거의 모든 테이블에 해당 정보와 관련된 칼럼이 존재합니다.

위와 같은 케이스에서 DB 입장에서는 각각 다른 속성이지만 객체 입장에서는 공통 속성이므로 Entity마다 똑같은 필드를 넣는 것은 상당히 비효율적입니다.

이때 등장하는 개념이 @MappedSuperclass이며 이번 게시글에서는 @MappedSuperclass 어노테이션에 대해 알아보겠습니다.

 

@MappedSuperclass

  • 부모 클래스를 상속받는 자식 클래스에 매핑 정보만 제공하며 속성을 같이 쓰고 싶을 때 적용
  • @MappedSuperclass는 상속관계 매핑이 아니며, 엔티티도 아니고, 테이블과 매핑되는 칼럼도 아님
    • 테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할
  • @MappedSuperclass 어노테이션이 부여된 클래스의 경우 엔티티가 아니므로 EntityManager를 통해 조회, 검색이 불가
    • 조회, 검색이 안되고 테이블과 매핑되는 칼럼도 아니므로 직접 생성해서 사용할 일이 없음
    • 추상 클래스로 선언할 것을 권장 (abstract)

 

* @Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속 가능

 

@MappedSuperclass 예시


 

출처

자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한 강사님)

반응형

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

[JPA] 값 타입 정리  (0) 2021.09.29
[JPA] 프록시와 연관관계 관리 정리  (0) 2021.09.14
[JPA] 상속관계 매핑  (2) 2021.09.07
[JPA] 다양한 연관관계 매핑  (0) 2021.08.31
[JPA] 연관관계 매핑 간단 정리  (0) 2021.08.28