Auditing

Базовый Spring
≈ 1 мин чтения

Автоматические поля времени

Во многих таблицах нужны служебные данные: когда запись была создана и когда её меняли последний раз. Заполнять такие поля вручную в каждом сервисе неудобно и легко забыть. Spring Data поддерживает auditing — инфраструктуру, которая может устанавливать эти значения при сохранении сущности.

@Configuration
@EnableJdbcAuditing
class PersistenceConfig {
}

@Table("customers")
class Customer {
    @Id
    Long id;

    String name;

    @CreatedDate
    Instant createdAt;

    @LastModifiedDate
    Instant updatedAt;
}

@EnableJdbcAuditing включает поддержку auditing для Spring Data JDBC. @CreatedDate отмечает поле времени создания, а @LastModifiedDate — поле последнего изменения. При сохранении через инфраструктуру Spring Data эти значения заполняются соответствующими callbacks.

Auditing не заменяет бизнес-данные

Дата технического изменения записи и, например, дата подтверждения заказа — разные вещи. Auditing хорошо подходит для служебной истории хранения, но события предметной области лучше моделировать отдельными полями, которые изменяются по правилам бизнеса.

Auditing можно расширить информацией о пользователе. Spring Data также поддерживает поля автора создания и изменения, но для них приложению нужно предоставить способ определить текущего пользователя.