[SpringBoot/MongoDB] MongoDB에서 @EnableMongoAuditing과 커스텀 DateTimeProvider로 시간 관리하기

binda·2024년 9월 7일

프로젝트 정리

목록 보기
4/9

mongoDB 는 @EnableMongoAuditing을 사용해서 시간을 설정할 수 있는데,
문제는
MongoDB는 JPA의 엔티티 라이프사이클 관리를 따르지 않기 때문에, @PrePersist@PreUpdate와 같은 어노테이션을 지원하지 않는다.

🤔 @EnableMongoAuditing 란 ?
MongoDB Auditing 기능은 데이터베이스에서 자동으로 생성 시간, 수정 시간과 같은 필드를 관리할 수 있도록 지원하는 기능


해결방안

👉 커스텀 DateTimeProvider 을 사용하여 원하는 시간대를 설정하기

  • 서울 시간대(UTC+9)**를 적용
@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

profile
🍤

0개의 댓글