[JPA] @MappedSuperclass로 공통 Entity 상속 받기(Created_At, Modified_At 등 공통 테이블 컬럼)

GilLog·2021년 7월 18일
0

JPA

목록 보기
7/8

🙆‍♂️ import 🙇‍♂️

자바 ORM 표준 JPA 프로그래밍


만약 모든 테이블에 CREATED_TIME, MODIFIED_TIME과 같은 공통 Column이 있다고 하자.

이럴때 @MappedSuperclass로 공통 Entity를 선언하고 상속받아 관리할 수 있다.

아래 코드를 보면 손쉽게 이해되고 사용할 수 있다.

@MappedSuperclass
public class CommonEntity {
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "CREATED_DATE")
    private Date createdDate;
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "MODIFIED_DATE")
    private Date modifiedDate;
}

@Table(name = "TB_USER")
@Entity
public class User extends CommonEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="U_ID")
    private long id;
    
    @Column(name="ID")
    private String userId;

    @Column(name="NICK_NAME")
    private String nickName;

    @Builder
    public User(long id, String nickName) {
        this.id = id;
        this.nickName = nickName;
    }
}

두 개 이상의 Table에서 사용하는 Column들의 집합이 있다면,

일일이 추가하지말고 위와 같이 @MappedSuperclass를 활용해보자.

profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글