JPA/Core
JPA Auditing 기능
by BAYABA
2021. 10. 10.
- 개인 공부 목적으로 작성한 글입니다.
- 아래 출처를 참고하여 작성하였습니다.
목차
- Intro
- JPA Auditing 이란?
- @EntityListeners(AuditingEntityListener.class)
3-1. @EntityListeners
3-2. AuditingEntityListener class
- @EnableJpaAuditing
- @CreatedDate
- @LastModifiedDate
1. Intro
- JPA에서 제공하는 Auditing 기능에 대해서 알아보겠습니다.
2. JPA Auditing 이란?
- Audit은 감시하다, 감사하다라는 뜻으로 Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능입니다.
- 즉, 해당 데이터를 보고 있다가 생성 또는 수정이 발생하면 자동으로 값을 넣어주는 편리한 기능입니다.
- 도메인 객체를 영속성 컨텍스트에 저장하거나 조회를 수행한 후에 update를 하는 경우 매번 시간 데이터를 입력해줘야 하는데, Auditing을 이용하면 자동으로 시간을 매핑하여 데이터베이스의 테이블에 넣어주게 됩니다.
3. @EntityListeners(AuditingEntityListener.class)
- 해당 도메인 Entity에서 Auditing 기능을 사용한다는 의미입니다.
- 도메인 Entity에는 리스너 기능만 포함하면 됩니다.
- 즉, Entity는 리스너 기능만 사용한다는 의미입니다.
@EntityListeners(AuditingEntityListener.class)
public class MyEntity {
//...
}
3-1. @EntityListeners
- Entity를 DB에 적용하기 이전, 이후에 커스텀 콜백을 요청할 수 있는 어노테이션입니다.
3-2. AuditingEntityListener class
- Entity 영속성 및 업데이트에 대한 Auditing 정보를 캡처하는 JPA Entity Listener class 입니다.
4. @EnableJpaAuditing
- 클라이언트쪽(사용하는 쪽)에서 @EnableJpaAuditing 설정을 통해 Auditing을 활성화합니다.
- 그러면 엔티티중에 AuditingEntityListener를 적용한 Entity들의 변경점을 캡쳐할 수 있습니다.
@EnableJpaAuditing
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
5. @CreatedDate
- 데이터 생성 날짜 자동 저장 어노테이션입니다.
- @CreatedDate (org.springframework.data)
@EntityListeners(AuditingEntityListener.class)
public class MyEntity {
//...
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}
6. @LastModifiedDate
- 데이터 수정 날짜 자동 저장 어노테이션입니다.
- @LastModifiedDate (org.springframework.data)
- @LastModifiedDate 어노테이션만 설정해도 updated_at 컬럼이 not null일 때 객체 생성시점에 create 시간을 update_at 컬럼에 넣어줍니다.
- 즉, Table상에 updated_at 컬럼 속성이 꼭 null일 필요가 없다는 뜻입니다.
@EntityListeners(AuditingEntityListener.class)
public class MyEntity {
//...
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}
출처
- [JPA ] Auditing 기능 살펴보기
- JPA Auditing 기능이란?