생성 날짜를 알아서 생성/수정해주는 애너테이션
@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가 추가적인 설정 없이 사용할 수 있어 편할 수 있지만,
요즘 추세를 하이버네이트 애너테이션을 사용하지 않는 것이라고 한다.
따라서 사용자가 위의 내용들을 참고하여 사용하고 싶은 애너테이션을 선택해 사용하길 바란다.
'공부 자료 > Spring' 카테고리의 다른 글
[Spring + JPA] JPA Entity 매핑 (feat. Entity 만들기) (2) | 2023.11.23 |
---|---|
[Spring] @AllArgsConstructor, @NoArgsConstructor를 지양하자? (0) | 2023.11.21 |
[Spring JPA] 페이징 Pageable, Page, Slice / 페이지 나누기 (2) | 2023.11.21 |
[Spring] Getter/Setter를 지양하자? (1) | 2023.11.21 |
[Spring] CORS란? (CORS에 대해 알고 설정하기) (2) | 2023.11.20 |