Audit

감시하다라는 뜻으로 Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능이다.

 

장점

생성일자나 수정일자를 넣을 시에 매번 시간 데이터를 넣어주지 않아도 된다. 자동으로 시간을 매핑하여 데이터베이스의 테이블에 넣어준다.

 

사용할 어노테이션 종류

  • @EntityListeners(AuditingEntityListener.class)
    • @EntityListeners: 지정한 리스너 클래스가 해당 엔티티의 생명주기 콜백(@PrePersist, @PreUpdate 등)을 추가하도록 설정한다.
    • AuditingEntityListener: 엔티티가 저장 또는 수정되는 시점에 자동으로 호출되어, @CreatedDate, @LastModifiedDate가 붙은 필드에 값을 채워 넣습니다.
  • @CreatedDate: Entity가 생성되어 저장될 때 시간이 자동 저장
  • @LastModifiedDate: 조회한 Entity의 값을 변경할 때 시간이 자동 저장
  • @EnableJpaAuditing
    • Auditing을 활성화하기 위해 필요한 어노테이션이다. Auditing에 필요한 빈들을 등록해준다.
    • Application 클래스 혹은 config 클래스에 붙여주면 된다. https://rosoa0475.tistory.com/353의 문제에 의해 되도록 Config 설정 클래스를 만들고 어노테이션을 붙여주자.
주관적으로 흐름은 아래와 같을 거 같다.

@EntityListeners에 AuditingEntityListener을 등록하여 AuditingEntityListener에서 제공하는 @PrePersist와 @PreUpdate를 메소드를 해당 엔티티에 추가해준다.
각 메소드에 @EntityListeners가 붙은 클래스 인자를 넘겨준다.
이후 @CreatedDate나 @LastModifiedDate 어노테이션이 붙은 필드를 찾아서 값을 할당해준다.

 

@Getter
@MappedSuperclass 
@EntityListeners(AuditingEntityListener.class) 
public abstract class BaseTimeEntity{

    // Entity가 생성되어 저장될 때 시간이 자동 저장됩니다.
    @CreatedDate
    private LocalDateTime createdDate;

    // 조회한 Entity 값을 변경할 때 시간이 자동 저장됩니다.
    @LastModifiedDate
    private LocalDateTime modifiedDate;

}

'Spring Boot > JPA' 카테고리의 다른 글

Spring Boot (fetch) join  (4) 2026.01.13
JPA & Hibernate 설명  (0) 2025.10.15
JPA @Query(+@Modifying) - JPQL  (0) 2025.08.21
Spring Boot JPA LZAY - LazyInitializationException 주의  (0) 2025.08.21
지연 로딩 조회 - getReferenceById  (0) 2025.08.21

+ Recent posts