SpringBoot @CreateDate, @LastModifiedDate

gwanhyeon·2022년 11월 29일

SpringBoot

목록 보기
2/2
post-thumbnail

Springboot Entity 생성 시간과 수정시간을 생성할 때 @CreateDate, @LastModifiedDate 를 사용합니다. 프로젝트를 진행하면서 계속해서 위의 Annotation을 적용하였지만, 생성시키지 못하는 경우가 생겼습니다.

공통적으로 생성시 BaseTime Class를 사용하여 사용합니다. 이러한 것은 컴파일시 Spring Main Class를 실행시켰을때 Auditing을 적용하지 못하여서 입니다. JPA에서는 Auditing이라는 기술을 사용합니다. Audit의 뜻은 감시하다, 감사하다라는 뜻을 가지고 있는 단어이며 Spring Data JPA에서 자동으로 값을 넣어주는 기능입니다.

@EntityListeners(AuditingEntityListener.class)
@EnableJpaAuditing

해당 클래스에서 Audting 기능을 포함하고 있기 때문에 Springboot Entry Point 실행클래에스 해당 어노테이션을 적용하여 JPA Auditing을 활성화 해주어야합니다.
그리고 JPA에서 Entity 컬럼에 @CreateDate, @LastModifiedDate 를 적용한 경우 Null값이 들어가는 경우는 업데이트가 제대로 안되는 상황이기 때문에

@Column(updatable = false) 

를 추가해주면 해당되는 현상을 해결 할 수 있습니다.

참고

java 1.8이상부터 Date, Calander 클래스를 사용하지 않고 LocalDate, LocalDateTime 클래스를 사용합니다. 이 전의 방식들은 복잡한 문제들을 많이 가지고 있습니다.

  • 그레고리력 유리우스력을 적용하여 발생한 오차날짜 생략
  • 시간관리(시간대DB에서 관리, OS와 별도로 관리)
  • immutable(불변)하지 못한 객체
  • 상수필드 남용
  • 날짜 생성은 Date, 연산은 Calendar, 결과는 Date 객체를 사용

profile
고민의 흔적을 남기자.

0개의 댓글