mongoDB 는 @EnableMongoAuditing을 사용해서 시간을 설정할 수 있는데,
문제는
MongoDB는 JPA의 엔티티 라이프사이클 관리를 따르지 않기 때문에, @PrePersist와 @PreUpdate와 같은 어노테이션을 지원하지 않는다.
🤔 @EnableMongoAuditing 란 ?
MongoDB Auditing 기능은 데이터베이스에서 자동으로 생성 시간, 수정 시간과 같은 필드를 관리할 수 있도록 지원하는 기능
@Configuration
@EnableMongoAuditing(dateTimeProviderRef = "auditingDateTimeProvider")
public class MongoConfig {
// 커스텀 DateTimeProvider를 사용해 Auditing 시 서울 시간대 적용
@Bean(name = "auditingDateTimeProvider")
public DateTimeProvider dateTimeProvider() {
return () -> Optional.of(OffsetDateTime.now(ZoneId.of("Asia/Seoul")));
}
}
👉 MongoDB Auditing 기능을 사용해 자동으로 생성 시간과 수정 시간을 설정
@MappedSuperclass
@Getter
public abstract class BaseTimeStamp {
@CreatedDate
private OffsetDateTime createdAt;
@LastModifiedDate
private OffsetDateTime updatedAt;
}
✅ 이제 BaseTimeStamp를 상속받는 모든 엔티티에서 자동으로 생성 시간과 수정 시간이 서울 시간대(UTC+9)로 관리된다.
📖 참고
CreatedDate and LastModifiedDate in Spring Data MongoDB