Note

[TIL] JPA AuditorAware

by 달쿨

데이터가 누구에 의해 생성되고 수정되고 삭제되었는지 로그 데이터가 필요할 때, 해당 부분을 설정하는 코드를 중복으로 사용하지 않고 JPA AuditorAware 기능을 사용해 JPA 가 자동으로 생성하도록 할 수 있다. 방법은 다음과 같다.

 

@EnableJpaAuditing 로 기능을 활성화한다.

 

설정을 적용할 BaseEntity 를 작성한다.

흔히 사용하는 @CreatedDate, @LastModifiedDate 등은 별도의 설정 없이도 자동으로 시간이 저장되지만 @CreateBy, @LastModifiedBy 처럼 데이터 생성자는 아래처럼 AuditorAware 설정이 필요하다

 

설정 예시

꼭 String 으로 반환할 필요는 없고, 개발자가 저장할 정보를 프로젝트 환경에 맞게 설정하면 된다.

 

사실 이전 프로젝트를 할 때, 자동으로 유저 id 가 저장되도록 구현했어야 했는데 해당 설정을 맡은 팀원분께서 유저 id 가 Long 타입인데도 String 으로 AuditorAware 가 반환하도록 했어서 당시에 AuditorAware는 String 타입만 반환되는 건가 생각을 했다. 그런데 직접 구현할 일이 생기고 알아보니 그냥 반환 타입을 지정할 수 있었다.

 

아마 어떤 유저도 아닌 경우를 String 타입으로 지정하고 싶으셨던 거라고 생각한다. 그때는 AuditorAware에 대해 잘 몰랐어서 코드 리뷰를 할 때도 이렇게 사용하는 거구나 하고 넘겼는데 지금 와서 다시 보면 String 으로 한 이유 등에 대해서 질문할 수 있었을 것 같다.

블로그의 정보

note

달쿨

활동하기