Auditing
Технические поля без ручного заполнения
У сущностей часто есть служебные поля: время создания записи и время последнего изменения. Если присваивать их вручную в каждом сервисе, код дублируется и легко забыть обновить одно из значений. Spring Data JPA умеет заполнять такие поля через auditing.
@Configuration
@EnableJpaAuditing
class PersistenceConfig {
}
@Entity
@EntityListeners(AuditingEntityListener.class)
class Customer {
@Id
@GeneratedValue
Long id;
@CreatedDate
Instant createdAt;
@LastModifiedDate
Instant updatedAt;
}
@EnableJpaAuditing включает инфраструктуру auditing,
а AuditingEntityListener подключает её к жизненному циклу сущности.
@CreatedDate отмечает значение времени создания,
а @LastModifiedDate — времени последнего изменения.
Auditing хранит техническую историю
Эти поля хорошо отвечают на вопросы «когда запись появилась в хранилище?» и «когда её меняли последний раз?».
Но они не заменяют даты предметной области: например, paidAt или approvedAt
должны изменяться по бизнес-правилам, а не просто при любом обновлении сущности.
Auditing может хранить и автора изменения.
Для
@CreatedBy и @LastModifiedBy
приложению дополнительно нужен способ сообщить Spring Data, кто является текущим пользователем.
Проверь себя
Разбор задания
Ментор знает решение и поможет тебе прийти к нему самостоятельно
Войди, чтобы использовать Ментора
Ментор учитывает текущую задачу и историю диалога.
Войти
Проверь важные нюансы и ответ после собственной попытки.
Войди, чтобы посмотреть решение
Решение и разбор доступны после авторизации.
Войти