Back-End/JPA

JPA - @MappedSuperclass, BaseEntity란?

LightSource 2023. 5. 13. 14:57

 

@MappedSuperclass

공통 매핑 정보가 필요할 때 사용한다.

주로 사용하는 컬럼인 id, name, 작성일, 등록자 등의 정보를 담은 공통으로 사용하는 정보를 모아서 작성하여야하는 코드를 줄여준다.

특징

  • 상속관계 매핑X
  • 엔티티X, 테이블과 매핑X
  • 부모 클래스를 상속 받는 자식클래스에 매핑 정보만 제공
  • 조회, 검색 불가(em.find(BaseEntity) 불가)
  • 직접 생성해서 사용할 일이 없으므로 추상 클래스를 권장

구현 코드

@MappedSuperclass
@Getter
@Setter
public abstract class BaseEntity {

    private String createBy;
    private LocalDateTime createDate;
    private String lastModifiedBy;
    private LocalDateTime lastModifiedDate;
}

@MappedSuperClass를 사용해여 매핑 정보 상속을 할 수 있게 지정하여주고

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public class Item extends BaseEntity{

    @GeneratedValue
    @Id
    private Long id;

    private String name;
    private int price;
}

다른 엔티티에서 이를 사용하기 위해서는 해당 클래스를 상속받으면 된다.

 

참고

해당 글은 김영한님의 자바 ORM 표준 JPA를 공부하며 작성한 글입니다.

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

반응형