@MappedSuperclass
- 공통 매핑 정보가 필요할 때 사용
- 상속관계 매핑이 아니다.
- 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공
- 직접 생성해서 사용할 일이 없기 때문에 추상클래스로 사용하길 권함
- 테이블이랑은 관계없고 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할
- ex) 등록일, 수정일, 등록자, 수정자 같은 전체에 공통으로 적용되어야 할 정보들..
- @Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속 가능
JPA에서는 Extends를 쓰려면 @Entity라는 어노테이션이 있거나 @MappedSuperclass가 있어야 한다.
- @Entity를 적었을 경우는 상속관계를 하기 위해서 쓴다.
- @MappedSuperclass는 공통적인 속성만 상속 받기 위해 사용
코드를 통해 살펴보자!
@Entity // 상속관계 매핑일 때 쓰이는 것
// 매핑 정보만 받는 부모클래스(superclass) - 속성만 상속 받는 것
@MappedSuperclass
public class BaseEntity {
@Column(name = "INSERT_MEMBER")
private String createdBy;
private LocalDateTime createDateTime;
@Column(name = "UPDATE_MEMBER")
private String lastModifiedBy;
private LocalDateTime lastModifiedDate;
- DBA의 요청으로 모든 엔티티에서 수정자, 등록자, 수정일, 등록일을 추가하라고 함.
- 개발자는 이를 위해 컬럼을 추가하기로 함.
- 모든 만들어진 엔티티에 각각 다 넣어줘야하는데 이게 너무너무 번거로운 작업이다.
- BaseEntity를 등장 시켜서 공통으로 사용해야할 컬럼들을 적어준다.
- 상속을 통해 필요한 엔티티들에서 공통적으로 BaseEntity를 상속받는다. (extends BaseEntity)
- 공통으로 사용하는 BaseEntity 는 @MappedSuperclass를 적어준다.
- 끝..
'Dev > JPA' 카테고리의 다른 글
RS) 프록시와 연관관계 (0) | 2022.03.02 |
---|---|
RS) 상속관계 매핑 (0) | 2022.02.22 |
RS) 다대다 관계 (0) | 2022.02.17 |
RS) 연관관계 매핑시 주의할 점 (0) | 2022.02.15 |
RS) 양방향 연관관계와 연관관계의 주인 (0) | 2022.02.06 |