공부 자료/Spring

[Spring] @CreatedDate&@LastModifiedDate vs @CreationTimeStamp&@UpdateTimeStamp, 둘은 뭐가 다를까?

희희웃는청바지 2023. 11. 21. 08:26
생성 날짜를 알아서 생성/수정해주는 애너테이션
@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가 추가적인 설정 없이 사용할 수 있어 편할 수 있지만,

요즘 추세를 하이버네이트 애너테이션을 사용하지 않는 것이라고 한다.

따라서 사용자가 위의 내용들을 참고하여 사용하고 싶은 애너테이션을 선택해 사용하길 바란다.