본문 바로가기

Development/Spring Framework

JPA Auditing으로 생성시간/수정시간 자동화

유지보수에 있어 Entity에는 해당 데이터의 생성시간과 수정시간은 굉장히 중요한 정보입니다. 그렇다 보니 매번 DB에 삽입/갱신 전 날짜 데이터를 등록/수정하는 코드가 들어가게 됩니다.

 

단순반복적인 코드를 깔끔하게 처리하기 위해 JPA Auditing을 사용합니다.

 

LocalDate 사용

JAVA 8부터 LocalDate와 LocalDateTime이 등장했습니다. 그렇다면 이전에 존재한 Date, Calendar 클래스의 문제점은 무엇일까요?

Data와 Calendar 문제점

- 불변 객체가 아닙니다. 고로 멀티스레드 환경에서 언제든 문제가 발생할 수 있습니다.

- Calendar의 월(Month) 값 설계는 잘못되었습니다. Calendar.OCTOBER의 값은 9입니다. 우리가 실생활에서 인지하는 값과 차이가 존재합니다.

- 참고: https://d2.naver.com/helloworld/645609 

 

반복되는 코드를 위와 같이 클래스를 생성해 생산성을 높일 수 있습니다. 작성한 위 추상 클래스를 Posts 클래스가 상속받도록 변경합니다.

 

그리고 JPA Auditing 어노테이션들을 모두 활성화할 수 있도록 main method가 있는 클래스에 활성화 어노테이션 [@EnableJpaAuditing]을 추가합니다.