[Spring] @CreatedDate&@LastModifiedDate vs @CreationTimeStamp&@UpdateTimeStamp, 둘은 뭐가 다를까?
생성 날짜를 알아서 생성/수정해주는 애너테이션
@CreatedDate & @LastModifiedDate / @CreationTimeStamp & @UpdateTimeStamp
게시글의 생성 날짜를 추가해주기 위해 알아보던 중 두가지 애너테이션이 많이 보였다.
오늘은 두 애너테이션의 차이와 사용방법에 대해서 알아보고자 한다.
오늘도 결론부터 이야기 해보자면,
사용 방법에 차이가 존재할 뿐 기능적인 부분에서 크게 차이나는 것은 아니다.
public class Member{
... 4개의 칼럼 외 모든 것 생략
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreationTimestamp
private LocalDateTime createTimeStamp;
@UpdateTimestamp
private LocalDateTime updateTimestamp;
}
* 각 애너테이션 및 이름을 가지고 생성일자와 수정일자를 가지는 Member 엔티티를 생성했다.
그럼 이제 본격적으로 두 애너테이션은 어떤 차이가 있는지 살펴보고자 한다.
@CreatedDate & @LastModifiedDate
1. springframework.data.annotaion 패키지에서 import
2. Spring Auditing 기술로 사용시 활성화 및 설정 필요
* SpringApplication에서 @EnableJpaAuditing 추가 필요
* Entity에서 @EntityListeners(AuditingEntityListener.class) 애너테이션 추가 필요
- JPA에서 공유 메모리 공간(Context)를 이용해 엔티티 객체들을 관리하고, 관리되는 객체들이 변경되면 데이터에 반영하는 재사용하는 방식이므로, 변화 감지를 위해 리스너를 사용한다.
3. 객체 생성/수정과 함께 자동으로 입력
4. microseconds(%ssssss)까지 입력
@CreationTimeStamp&@UpdateTimeStamp
1. hibernate.annotaion 패키지에서 import
2. DB로 넘어갈 때 자동 입력
3. milliseconds(%sss)까지 입력
위에서 본 것처럼 둘의 차이는 별로 없다.
@CreationTimeStamp & UpdateTimeStamp가 추가적인 설정 없이 사용할 수 있어 편할 수 있지만,
요즘 추세를 하이버네이트 애너테이션을 사용하지 않는 것이라고 한다.
따라서 사용자가 위의 내용들을 참고하여 사용하고 싶은 애너테이션을 선택해 사용하길 바란다.