728x90
320x100
Auditing 기능은 Spring Data JPA에서 누가 언제 어떤 작업을 했는지를 자동으로 기록해주는 기능.
(즉, 어떤 사람이 게시글을 생성하거나 수정했을 때, 그 생성 일시, 수정 일시, 작성자, 수정자 같은 정보들을 자동으로 남겨주는 기능)
왜 필요한가?
- 기록을 남기기 위해: 누가 어떤 데이터를 바꿨는지 추적 가능해야 함.
- 디버깅과 보안 감사: 이상한 데이터 변경이 있으면 누가 했는지 추적 가능.
- 변경 이력 관리: 데이터를 수정하거나 삭제했을 때, 언제 어떻게 바뀌었는지 기록 필요.
대표적으로 기록하는 필드
- createdAt (언제 생성되었는지)
- createdBy(누가 생성했는지)
- updatedAt(언제 마지막으로 수정되었는지)
- updatedBy(누가 마지막으로 수정했는지)
적용방법
1. 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
*** Auditing 기능은 Spring Data JPA가 제공하는 부가기능 중 하나라서, spring-boot-starter-data-jpa 의존성이 있어야 제대로 동작!
2. 엔티티에 어노테이션 사용
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Post {
@Id
@GeneratedValue
private Long id;
private String content;
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
@CreatedBy
private String createdBy;
@LastModifiedBy
private String updatedBy;
}
- 클래스 상단 : @EntityListeners(AuditingEntityListener.class)
- 각 컬럼 : @CreatedDate, @LastModifiedDate, @CreatedBy, @LastModifiedBy
3. 설정 클래스에서 활성화
@Configuration
@EnableJpaAuditing
public class JpaConfig {
}
*** 처음엔 당연히 없으니 생성해주면 됨
설정파일(클래스) 아무 내용도 없이 어노테이션만 붙었는데 기능이 된다고?
- Spring의 자동 구성(Auto Configuration) + 내부 메타프로그래밍 매직 덕분인데 @EnableJpaAuditing 이 내부적으로 필요한 설정을 자동 import 함.
- @EntityListeners + @CreatedDate 등의 어노테이션을 보고 감지하고 처리하는 코드가 이미 존재하고 Spring Boot가 spring-boot-starter-data-jpa 를 통해 기본 JPA 설정을 자동 구성함.
- Spring Boot + Spring Data JPA는 이미 필요한 로직을 다 구현해놨고, 우리는 단지 그 기능을 '켜기만(@EnableJpaAuditing)' 하면 되는 구조
728x90
320x100
'💻 하나씩 차곡차곡 > Back-end' 카테고리의 다른 글
[Spring JPA]JPA Repository란? (정의, 구조, 사용하는 이유, 사용법 등) (0) | 2025.04.18 |
---|---|
[Spring Security] BCryptPasswordEncoder란? (정의, 사용하는 이유, 사용법 등) (0) | 2025.04.18 |
프로젝트 패키지 구조 : 레이어 중심 VS 도메인 중심 (0) | 2025.04.18 |
[Spring] @Builder란? (Feat. 정적 생성 메서드) (0) | 2025.04.18 |
[Spring] SQL 로그 출력 방법 총정리 (feat. show-sql, format_sql, log4jdbc,p6spy) (0) | 2025.04.16 |