Как сохранить старые и новые значения столбцов в таблице аудита с помощью 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), и он позаботится о следующем:
- Создать таблицы аудита
- Вставьте данные в таблицу аудита, когда объект вставлен / обновлен / удален
- Он предоставляет свой собственный язык запросов, с помощью которого вы можете получить все, что было изменено в сущности
Обновить
Вы также можете взглянуть на javers. Я использовал javers вместе с EntityInterceptor Hibernate, чтобы фиксировать изменения в форме изменения поля, старого значения и нового значения. См. Javers Diff для более подробной информации.