@MappedSuperClass 그게 뭔데?

maketheworldwise·2023년 1월 26일


이 글의 목적?

이번 글은 @MappedSuperClass에 대한 내용이다. 사실 JPA 상속 관계 매핑 글에 내용을 추가하여 작성하려했지만, 상속 매핑과 관계가 없고 헷갈릴 수 있겠다 싶어서 별도로 정리해보고자 한다.

@MappedSuperClass

이 어노테이션은 DB 테이블과 관계없이 객체 입장에서 속성만 상속 받아 사용하고 싶을 때 이용한다. 즉, 공통의 매핑 정보가 필요할 때 사용하는 어노테이션이다. 주로 등록일, 수정일, 등록자, 수정자 같은 정보에서 많이 사용한다.

사용방법은 간단하다. 공통의 필드를 명시해놓은 클래스에 어노테이션을 선언해주고, 해당 클래스를 상속받아서 이용만해주면 된다.

@MappedSuperClass
public abstract class BaseEntity {
  private LocalDateTime createdAt;
  private LocalDateTime updatedAt;
}

이 어노테이션의 특징은 다음과 같다.

  • 상속 관계 매핑과 관계없음
  • 상위 클래스를 상속받는 하위 클래스에 매핑 정보만을 제공
  • 조회, 검색 불가 (em.find(BaseEntity))
  • 직접 생성해서 사용할 일이 없기에 추상 클래스로 사용하는 것을 권장

이 글의 레퍼런스

profile
세상을 현명하게 이끌어갈 나의 성장 일기 📓

0개의 댓글