개발 일지/Spring
[Spring Data JPA] Auditing 기능
미숫가루설탕많이
2023. 3. 13. 00:23
관계형 데이터베이스 테이블을 매핑할 때 공통적으로 도메인들이 가지고 있는 필드가 있다.
Spring Data JPA에서는 생성일자나 수정일자와 같이 시간에 관련한 데이터를 자동으로 넣어주는 auditing 기능을 제공한다.
public class Member {
@Column(nullable = false)
private LocalDateTime createdAt = LocalDateTime.now();
@Column(nullable = false, name = "LAST_MODIFIED_AT")
private LocalDateTime modifiedAt = LocalDateTime.now();
}
위의 코드는 직접 LocalDateTime.now()를 통해서 초기화를 시켜주지만 JPA에서 제공하는 기능을 통해 다음과 같이 간편하게 설정할 수 있다.
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Auditable {
@CreatedDate
@Column(name = "created_at", updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@Column(name = "LAST_MODIFIED_AT")
private LocalDateTime modifiedAt;
}
public class Member extends Auditable {
@CreatedDate
@Column(nullable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@Column(nullable = false, name = "LAST_MODIFIED_AT")
private LocalDateTime modifiedAt;
}
- @CreatedDate
: 엔티티의 생성 시간 저장 - @CreatedBy
: 엔티티를 생성한 사용자 정보를 저장 - @LastModifiedDate
: 엔티티의 수정 시간 저장 - @LastModifiedBy
: 엔티티를 수정한 사용자 정보를 저장
// 추가
포스트맨에서 post를 하고 데이터베이스를 확인해보니까 CREATED_AT이 null 값으로 나와서 확인해보니 스프링부트 애플리케이션에서 JPA Auditing 기능을 활성화 시켜주지 않았었다.