[JPA] @MappedSuperclass

SJ·2022년 12월 15일

JPA

목록 보기
7/12

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

  • 생성 시간, 수정 시간, 작성자 등에도 사용 가능하다.

@MappedSuperclass
public class BaseEntity {
	
	private String createdBy;
    private LocalDateTime createdDate;
    private String lastModifiedBy;
    private LocalDateTime lastModifiedDate;
}
  • 위와 같이 중복되는 필드를 빼서 필요한 엔티티마다 extends하여 사용하면 된다.

  • 상속관계 매핑 X, 엔티티 X, 테이블과 매핑 X

  • 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공

  • 조회, 검색 불가(em.find(BaseEntity) 불가)

  • 추상 클래스로 만들기 권장

  • 테이블과 관계 없이 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할

  • 주로 등록일, 수정일, 등록자, 수정자와 같은 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용

  • 참고: @Entity 클래스는 엔티티나, @MappedSuperclass를 선언한 클래스만 상속 가능하다.

profile
slowly But Surely

0개의 댓글