자 이제 Entity에 공통적으로 들어가는 값들을 정의할 것이다.
private LocalDateTime createdAt;
private LocalDateTime lastModifiedAt;
private LocalDateTime deletedAt;
사용방법은 간단하다 Configuration 클래스를 생성하고 @EnableJpaAuditing을 사용하면 활성화가 된다.
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfiguration {
}
공통으로 들어가는 값들을 정의한 클래스를 만들어야 한다.
@MappedSuperclass : BaseEntity를 상속한 entity들은 BaseEntity의 멤버변수를 모두 컬럼으로 인식
@EntityListeners(AuditingEntityListener.class) : entity를 DB에 적용 전후로 콜백(auditing 정보를 주입하는 클래스)
@Getter
@Setter
@MappedSuperclass //BaseEntity를 상속한 entity들은 BaseEntity의 멤버변수를 모두 컬럼으로 인식
@EntityListeners(AuditingEntityListener.class) //entity를 DB에 적용 전후로 콜백(auditing 정보를 주입하는 클래스)
@ToString
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@Column
private LocalDateTime lastModifiedAt;
private LocalDateTime deletedAt;
// 삭제
public void deleteSoftly(LocalDateTime deletedAt) {
this.deletedAt = deletedAt;
}
// 확인
public boolean isSoftDeleted() {
return null != deletedAt;
}
// 삭제 취소
public void undoDeletion(){
this.deletedAt = null;
}
}
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
@Table(name = "Users")
public class User extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userName;
private String password;
}
위와같이 상속을 받으면 정상적으로 BaseEntity의 정의된 필드들이 Entity에 적용이 된다.
