JPA

[Spring Data JPA] Auditing

감자b 2024. 12. 30. 00:14

Auditing

JPA의 Auditing은 엔티티의 생성 및 수정 정보를 자동으로 기록하는 기능이다.

이를 통해 데이터베이스의 변경 이력을 관리하고, 누가 언제 데이터를 수정했는 지를 추적할 수 있다.

Spring Data JPA에서는 해당 기능을 쉽게 사용할 수 있도록 지원한다.

 

설정 방법

1. 스프링 부트 설정 클래스에 @EnableJpaAuditing 어노테이션을 추가하여 Auditing 기능을 활성화

@SpringBootApplication
@EnableJpaAuditing
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2. Auditing을 위한 BaseTimeEntity(생성 일자, 수정 일자) 생성

  • @EntityListeners(AuditingEntityListener.class) 적용해야 함.
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
@Getter
public class BaseTimeEntity {
     @CreatedDate
     @Column(updatable = false)
     private LocalDateTime createdDate;
     
     @LastModifiedDate
     private LocalDateTime lastModifiedDate;
}

 

 

3. Auditing을 위한 BaseEntity(생성자, 수정자) 생성

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

    @CreatedBy
    @Column(updatable = false)
    private String createdBy;

    @LastModifiedBy
    private String lastModifiedBy;
}

 

4. Auditing할 엔티티에 BaseEntity 상속

@Entity
public class User extends BaseEntity {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

5. 생성자와 수정자의 경우 자동으로 관리하려면 AuditorAware를 구현, 빈 등록

@Bean
public AuditorAware<String> auditorProvider() {
		// 세션 정보 또는 스프링 시큐리티 로그인 정보에서 ID를 기록
    return () -> Optional.of(UUID.randomUUID().toString());
}

 

이렇게 하면 생성, 수정 시 데이터베이스에 값을 자동으로 채워준다.


참고

 

실전! 스프링 데이터 JPA 강의 | 김영한 - 인프런

김영한 | 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제

www.inflearn.com