IT/JPA & Hibernate
[JPA] @MappedSuperclass 사용법
Bamdule
2021. 5. 8. 17:26
1. @MappedSuperclass란?
엔티티 별로 공통 필드가 존재하는 경우 불 필요한 중복 코드를 제거하기 위해 사용합니다.
2. 사용방법
1) BaseEntity.java
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@MappedSuperclass
public abstract class BaseEntity {
private LocalDateTime createDt;
private LocalDateTime updateDt;
}
@MappedSuperclass 어노테이션을 클래스명 위에 선언하며, 공통 클래스를 별도로 생성하는 일이 없다면 추상 클래스로 선언하는 것이 좋습니다. 등록일, 수정일 같이 여러 테이블에서 공통으로 사용되는 필드를 테이블에 컬럼으로 등록할 때 사용합니다.
2) Product.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Product extends BaseEntity{
@Id
@GeneratedValue
private Long id;
private String name;
private int price;
}
BaseEntity 클래스를 상속 받으면 BaseEntity에 선언된 변수들이 컬럼으로 등록됩니다.