Как сохранить старые и новые значения столбцов в таблице аудита с помощью Spring Data JPA

Я использую Spring Boot, с Spring Data JPA а также MS Sql server2014 база данных для процесса сохранения и обновления сущности (javax.persistence) в таблицы.

В соответствии с требованием мы должны проверять каждый столбец всех таблиц. Поэтому я создал новую таблицу как "Аудит" с соответствующими столбцами. Но я не уверен, как сохранить старые и новые значения и другие столбцы.

Есть ли какой-нибудь отдельный API для поддержки этой функции весной?

create table Audit
(
  Id INT NOT NULL PRIMARY KEY,
  TableName VARCHAR (100)
  ColumnName VARCHAR (100)
  RowId INT,
  OldValue VARCHAR (100),
  NewValue VARCHAR (100),
  Type VARCHAR (100),
  ChangedDate DATETIME,
  ChangedBy VARCHAR (100),
);

где "Тип" указывает тип операции DML, а столбцы "Старое значение и Новое значение" сохраняют предыдущие и существующие значения столбцов в родительской таблице.

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

1 ответ

Убедитесь, что Hibernate Envers прост в настройке (все, что вам нужно сделать, это пометить вашу сущность как @Auditable), и он позаботится о следующем:

  1. Создать таблицы аудита
  2. Вставьте данные в таблицу аудита, когда объект вставлен / обновлен / удален
  3. Он предоставляет свой собственный язык запросов, с помощью которого вы можете получить все, что было изменено в сущности

Обновить
Вы также можете взглянуть на javers. Я использовал javers вместе с EntityInterceptor Hibernate, чтобы фиксировать изменения в форме изменения поля, старого значения и нового значения. См. Javers Diff для более подробной информации.

Другие вопросы по тегам