반응형
JPA의 @MappedSuperclass 정리
@MappedSuperclass는 공통 매핑 정보만 제공하는 용도의 클래스에 붙이는 JPA 애노테이션입니다.
실제 엔티티나 테이블로 매핑되지 않으며, 자식 엔티티가 이 클래스의 필드를 그대로 자신의 필드처럼 포함하여 테이블 컬럼으로 매핑되도록 합니다.
언제 사용하는가?
- 여러 엔티티에 공통된 필드(ex. 생성일, 수정일, 삭제일 등)가 반복될 때
- 상속 관계를 표현하려는 것이 아니라, 중복 제거 및 일관성 유지가 목적일 때
- JPA의 상속 전략(@Inheritance) 을 사용하지 않고 테이블은 각각 따로 유지하고 싶을 때
@MappedSuperclass
pulbic abstract class BaseEntity {
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private LocalDateTime deletedAt;
}
@Entity
public class Member extends BaseEntity {
private String name;
}
- BaseEntity는 엔티티도 아니고 테이블도 생성되지 않습니다.
- 대신 Member, Seller 등의 하위 클래스 테이블에 created_at, updated_at, deleted_at 컬럼이 자동으로 포함됩니다.
- 이 방식은 ORM의 매핑 정보를 재사용하는 것이지, DB 상속 전략을 구현하는 것은 아님.
- 따라서 직접 조회, 검색 불가
- 직접 테이블 생성할 일 없으므로 추상클래스 권장
반응형
'프로그래밍 > JPA' 카테고리의 다른 글
[JPA] 즉시 로딩과 지연 로딩 (2) | 2025.07.16 |
---|---|
[JPA] 프록시와 연관관계 관리 (0) | 2025.07.15 |
[JPA] 상속관계 매핑 (2) | 2025.07.03 |
[JPA] 다양한 연관관계 매핑 (1) | 2025.06.30 |
[JPA] 양방향 연관관계와 연관관계의 주인[2] (0) | 2025.06.25 |