본문 바로가기
Study/JPA

[JPA] 공통 속성 매핑

by DevJaewoo 2022. 8. 26.
반응형

JPA LOGO

공통 속성 매핑

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