Section 1. Auditing
1. Auditing
엔티티에 공통으로 들어가는 멤버변수들 (등록시간, 수정시간, 등록자, 수정자 등등)을 추상클래스로 만들고, 해당 추상 클래스를 상속받아 엔티티에 공통적인 기능을 수행하도록 하며 엔티티의 생성과 수정을 감시하는 기법
2. Auditing 필요성
- 여러 엔티티에 공통된 멤버변수가 존재할 때 하나의 추상클래스로 통합하여 구현할 수 있음
- 등록시간, 수정시간, 등록자, 수정자 등등의 엔티티 상태 변경에 대한 정보를 기록할 수 있음
- 기록을 바탕으로 버그 문의, 업데이트 변경 대상 조회 등등 여러 상황에서 사용됨
3. AuditorAware
- 로그인한 사용자를 등록자 및 수정자로 지정하기 위해 AuditorAware 인터페이스를 구현
- 현재 로그인한 사용자의 정보를 추출
Authentication authentication =
SecurityContextHolder.getContext().getAuthentication();
4. Auditing Config
- @EnableJpaAuditing 지정하여 Auditing 기능 활성화
- "auditorProvider" 이름으로 AuditorAware 구현체 Bean 등록
5. BaseTimeEntity
- 등록자 및 수정자 제외한 시간관련 Auditing 기능 수행 Entity
6. BaseEntity
- 등록자 및 수정자, 등록 및 수정 시간을 모두 갖는 Entity
- BaseTimeEntity 상속
궁금한 건 못 참지 (@EnableJpaAuditing, @EntityListeners, @MappedSuperclass)
7. Member(회원) Entity Auditing
- Member 클래스에서 BaseEntity 상속
8. Member(회원) Entity Auditing 테스트
- 클래스 생성 및 DI
- Member Entity Auditing 테스트
- @WithMockUser 를 이용하여 "codren" USER 로 로그인한 상태에서 Member 객체를 생성
- Auditing 결과 (등록 및 수정 시간, 등록 및 수정자)
9. Entity Auditing 적용
- 나머지 Entity 에도 Auditing 적용
- 이미 regTime 또는 updateTime 필드가 존재한다면 제거