@MappedSuperclass
공통 매핑 정보가 필요할 때 사용하는 어노테이션이다.
@MappedSuperclass은 상속관계 매핑이 아니며, 엔티티도 아니고, 테이블과 매핑이 되지 않는다.
테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할이다.
주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용한다.
부모 클래스를 상속 받는 자식 클래스에게 매핑 정보만을 제공하며, 직접 생성해서 사용할 일 없으므로 추상 클래스로 사용하는 것을 권장한다.
해당 부모 클래스는 따로 조회나 검색이 불가능하다.
참고: @Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속 가능하다
예시 코드
@MappedSuperclass
public class BaseEntity {
private String createdBy;
private LocalDateTime createdDate;
private String lastModifiedBy;
private LocalDateTime lastModifiedDate;
}
@Entity
public class Member extends BaseEntity {
@Id @GeneratedValue
@Column(name = "MEMBER_ID")
private Long id;
private String username;
}
'spring 🍀 > spring-data-jpa' 카테고리의 다른 글
Spring Data JPA Auditing으로 엔티티의 생성/수정 시각 자동으로 기록 + 생성자/수정자도 기록하기 (1) | 2023.11.23 |
---|---|
JPA N+1 문제 해결과정 ( join fetch + CountQuery) (0) | 2023.11.23 |
JPA 프록시와 지연로딩/즉시로딩 (1) | 2023.11.23 |
JPA의 Entity는 기본 생성자가 왜 반드시 필요할까? (1) | 2023.11.20 |
EntityManager와 EntityManagerFactory (0) | 2023.11.20 |