만약 모든 테이블에 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
를 활용해보자.