-
[JPA] 공통 매핑 정보 @MappedSuperclassJPA 2023. 7. 9. 10:59
[JPA] 공통 매핑 정보 @MappedSuperclass
안녕하세요? 장장스입니다.
오늘은 JPA에서 공통 매핑 정보를 편리하게 사용하는 @MappedSuperclass 에 대해 정리해보겠습니다.
실무에서 공통으로 사용되는 칼럼들
실무에서 테이블을 만들 때 보통 최초생성자와 생성시간, 최종수정자와 수정시간을 저장하는 칼럼들을 사용한다. 매번 반복되는 테이블 칼럼을 반복해서 사용하는 것은 개발자에게 꽤나 번거로운 일이 될 것이라 생각한다. JPA에는 이처럼 공통적으로 매핑되는 칼럼을 쉽게 사용할 수 있도록 @MappedSuperclass 어노테이션을 통해 기능을 제공합니다.
@MappedSuperclass
위에서 언급한 최초생성자와 생성시간, 최종수정자와 수정시간을 공통으로 작성할 수 있도록 BaseEntity라는 클래스를 만들어 사용할 수 있습니다.
@MappedSuperclass @Getter @Setter public abstract class BaseEntity { @Column(name = "INSERT_MEMBER") private String createBy; private LocalDateTime createDate; @Column(name = "UPDATE_MEMBER") private String lastModifiedBy; private LocalDateTime lastModifiedDate; }
위처럼 공통정보를 담은 BaseEntity 클래스를 상속하여 사용 할 수 있습니다.
@Entity public class Member extends BaseEntity{ ... }
공통 매핑 정보를 담는 BaseEntity는 직접 생성해서 사용하지 않으므로 추상(abstract) 클래스를 사용을 권장합니다.
@MappedSuperclass를 사용한 BaseEntity는 엔티티로 사용할 수 없습니다. BaseEntity를 상속받은 자식 클래스는 매핑 정보만 제공하고 조회할 수 있습니다. (em.find(BaseEntity)는 되지 않습니다.)
참고로 엔티티는 @Entity, @MappedSuperclass 가 선언된 클래스만 상속 받을 수 있습니다.
Post
References
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'JPA' 카테고리의 다른 글