개발 일지/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 기능을 활성화 시켜주지 않았었다.