본문 바로가기

IT/JPA & Hibernate

[JPA] @MappedSuperclass 사용법

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에 선언된 변수들이 컬럼으로 등록됩니다.