반응형
공통 속성 매핑
Audit과 같이 상속 관계는 아니지만 생성일자, 수정일자 등 공통적인 속성을 여러 클래스가 사용해야 하는 경우가 있다.
JPA에서 이런 공통 속성을 매핑하는 방법에 대해 알아보자.
실습하기 전 공통 속성을 물려받을 테스트용 클래스를 만들어주자.
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PROTECTED)
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
}
@MappedSuperClass
위의 그림과 같이 공통 속성을 상속받고 싶을 경우 부모 클래스에 @MappedSuperClass 어노테이션을 달아주면 된다.
@Getter
@MappedSuperclass
public class BaseTimeEntity {
@Column(updatable = false)
private LocalDateTime createdDate;
private LocalDateTime updatedDate;
}
특징
- 주로 등록일, 수정일, 등록자, 수정자 같은 많은 Entity에서 공통으로 적용하는 정보를 묶을 때 사용한다.
- 공통 속성만 물려받는 것이지 상속 관계를 매핑하는 것이 아니다.
- BaseEntity는 자식 클래스에 매핑 정보만 제공한다.
- Entity가 아니기 때문에 BaseEntity 테이블이 별도로 생성되지 않고, 조회도 불가능하다.
- 직접 생성하여 사용할 일이 없어 추상 클래스로 생성하는 것이 좋다.
출처
반응형
'Study > JPA' 카테고리의 다른 글
[JPA] 상속관계 매핑 (0) | 2022.08.26 |
---|---|
[JPA] 연관관계 매핑 (0) | 2022.08.25 |
[JPA] Entity 필드, 컬럼 매핑 (0) | 2022.03.05 |
[JPA] 영속성 컨텍스트 (0) | 2022.03.05 |
[JPA] DB에 데이터 넣어보기 (0) | 2022.02.26 |