Configuration 어노테이션을 통해 JPA 에서 auditing 을 가능하게 하는 어노테이션
먼저 EnableJpaAuditing 를 가장 자주 만나는 생성일자, 수정일자 자동으로 등록하는 방법을 보고 EnableJpaAuditing 가 가지는 여러 인자에 대해 알아보겠습니다.
객체를 생성하거나 수정할 때 생성자와 Setter 에 LocalDateTime.now() 등 시간을 나타내는 객체를 넣어 생성일자와 수정일자를 관리할 수 있습니다.
1.EntityListeners
엔티티를 DB에 적용하기 이전, 이후에 콜백 리스너를 요청할 수 있는 어노테이션
자세한내용참조
2.CreatedDate
인스턴스가 생성되는 것을 감지하여 감지된 일자를 저장합니다.
3.LastModifiedDate
인스턴스가 수정되는 것을 감지하여 감지된 일자를 저장합니다.
EnableJpaAuditing
LocalDateTime으로 생성된 인스턴스 변수에 시간을 자동으로 등록할수있는 기능을 해줍니다.
private LocalDateTime createdAt;
테스트환경 오류참조
같은 세팅으로 테스트를 돌리면 빈이 등록이 되지 않았다는 에러가 발생합니다.
@Import 를 해봐도, 다시 한번 빈으로 등록했는지 확인해봐도 같은 에러가 발생하였고 다른 방법으로 해결할 수 있었습니다.
테스트 환경에서 바꿔야 하는 걸 알았고 DataJpaTest 에 설정을 추가해 주었습니다.
@DataJpaTest(includeFilters = @Filter(
type = FilterType.ASSIGNABLE_TYPE,
classes = {DateTimeImpl.class}
))