본문 바로가기
개인 공부/TIL

TIL : @CreatedDate, @CreationTimestamp (11)

by 희조당 2022. 9. 12.
728x90

🌞 Spring

엔티티 클래스에서 시간을 2가지 방법으로 관리한다.

바로 Hibernate에서 제공하는 @CreationTimestamp과 JPA에서 제공하는 @CreatedDate. 

둘의 차이를 알아보자!!

1️⃣ @CreatedDate & @LastModifiedDate

사용하기 위해선 2가지 설정이 필요하다! 

  • SpringApplication@EnableJpaAuditing을 붙인다.
  • 선언한 엔티티에 @EntityListeners(AuditingEntityListener.class)를 붙인다.

설정이 필요한 이유는 다음과 같다.

  • JPA는 JPA 고유 메모리 공간(context)을 이용해서 엔티티 객체들을 관리한다.
  • 관리되는 객체들이 변경되면 데이터에 반영되는 형식이다. 즉, 재사용하는 방식이다.
  • 이 변화를 감지할 수 있어야 한다. 따라서 리스너라는 녀석을 사용한다.

따라서 @EnableJpaAuditing을 사용하게 리스너를 활성화시키고 @EntityListeners(AuditingEntityListener.class)를 사용해서 엔티티를 감시하게 하는 것이다!

2️⃣@CreationTimestamp & @UpdateTimestamp

Hibernate에서 제공하는 어노테이션이다.

JPA에서 제공하는 어노테이션과 다르게 추가적인 설정은 필요 없다!

 

요즘 추세는 하이버네이트의 어노테이션을 사용하지 않는 것이라고 한다!! (21. 07월 기준)

댓글