[스프링(spring)]@EnableJpaAuditing

allnight5·2022년 12월 8일
0

스프링

목록 보기
6/62

참조

@EnableJpaAuditing

Configuration 어노테이션을 통해 JPA 에서 auditing 을 가능하게 하는 어노테이션

먼저 EnableJpaAuditing 를 가장 자주 만나는 생성일자, 수정일자 자동으로 등록하는 방법을 보고 EnableJpaAuditing 가 가지는 여러 인자에 대해 알아보겠습니다.


객체를 생성하거나 수정할 때 생성자와 Setter 에 LocalDateTime.now() 등 시간을 나타내는 객체를 넣어 생성일자와 수정일자를 관리할 수 있습니다.

1.EntityListeners
엔티티를 DB에 적용하기 이전, 이후에 콜백 리스너를 요청할 수 있는 어노테이션
자세한내용참조

  • 엔티티 리스너의 필요Permalink
    특정 컬럼의 변화를 감지해 데이터를 변화시키고 로그 테이블에 저장해야 할 필요가 있었습니다.
  • 같은 테이블의 데이터 조작은 물론 다른 테이블에 추가적인 행위를 하는 리스너를 소개했습니다.
    엔티티 리스너를 통해 동일한 로직이 여러 곳에 존재하는 코드를 걷어내고 사람의 실수를 방지할 수 있게 되었습니다.

2.CreatedDate
인스턴스가 생성되는 것을 감지하여 감지된 일자를 저장합니다.


3.LastModifiedDate
인스턴스가 수정되는 것을 감지하여 감지된 일자를 저장합니다.

EnableJpaAuditing
LocalDateTime으로 생성된 인스턴스 변수에 시간을 자동으로 등록할수있는 기능을 해줍니다.
private LocalDateTime createdAt;

테스트환경 오류참조
같은 세팅으로 테스트를 돌리면 빈이 등록이 되지 않았다는 에러가 발생합니다.
@Import 를 해봐도, 다시 한번 빈으로 등록했는지 확인해봐도 같은 에러가 발생하였고 다른 방법으로 해결할 수 있었습니다.
테스트 환경에서 바꿔야 하는 걸 알았고 DataJpaTest 에 설정을 추가해 주었습니다.

@DataJpaTest(includeFilters = @Filter(
    type = FilterType.ASSIGNABLE_TYPE,
    classes = {DateTimeImpl.class}
))
profile
공부기록하기

0개의 댓글