Auditing
Автоматические поля времени
Во многих таблицах нужны служебные данные: когда запись была создана и когда её меняли последний раз. Заполнять такие поля вручную в каждом сервисе неудобно и легко забыть. 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 хорошо подходит для служебной истории хранения, но события предметной области лучше моделировать отдельными полями, которые изменяются по правилам бизнеса.