2017-02-20 11 views
1

Я использую данные Spring JPA и Spring Boot для моего проекта.Hibernare envers Аудит с данными весны JPA и Spring Boot

У меня есть требование аудита для объектов (создание/обновление/удаление). Возможно, мне придется получить ревизии ревизий для определенных объектов. Я проверил на сети, что данные о данных Spring не могут получить изменения и не отслеживать удаления?

Так что мой вопрос:

1) Можно ли интегрировать Hibernate Envers с JPA Spring данных?

2) У нас есть собственные запросы, данные HQL и Spring JPA для обновления/сохранения/удаления динамических запросов, так что Hibernate envers сможет отслеживать объект для всех?

Поскольку я новичок в области аудита, сообщите мне о вышеуказанных вопросах.

спасибо.

ответ

2

Можно ли интегрировать спящий режим с параметрами Spring data JPA?

Да, Hibernate Envers специально интегрируется непосредственно с Hibernate ORM и поскольку Spring Data JPA уже интегрируется с Hibernate ORM, вы получите это вне коробки.

У нас есть собственные запросы, данные HQL и данные Spring JPA для обновления/сохранения/удаления динамических запросов, так что Hibernate envers сможет отслеживать объект для всех?

Пока вы манипулируете сущностями посредством сохранения/обновления сеанса или операций повторения/слияния EntityManager, Hibernate поднимет необходимые события для Envers для отслеживания ваших изменений.

Если вы используете SQL Native или CriteriaUpdate/CriteriaDelete операции JPA, чтобы манипулировать записей базы данных, то не Envers воли не пикап эти изменения. Это связано с тем, что Hibernate не будет создавать событие для операций с массовыми или без гражданства, позволяя Envers проверять эти изменения.

+0

Большое спасибо за ответ, нормально. Теперь я понятен. Native SQL не будет генерировать какое-либо событие для Hibernate, поэтому не будет проверяться. Любой HQL, управляемый менеджером Entity, будет генерировать аудит. Что относительно динамических запросов JPA-данных Spring? (например, @Query (значение = "удалить из Employee emp где emp.id =? 1"), будет ли это создавать аудит? – Khushi

+0

Я думаю, что данные Spring JPA будут обрабатываться в транзакции, я должен быть способен ее проверять. Благодарю. – Khushi

0

Да, нет проблем с интеграцией Spring Data JPA и Hibernate Envers. Он отслеживает операции сохранения, обновления и удаления. Вы должны добавить только примечание @Audited над вашим классом.

+0

Благодарим за отзыв, не могли бы вы ответить на вопрос 2. – Khushi

4

можно и легко! Я сделал пример проекта, используя эти технологии: Spring boot, Spring data jpa и hibernate с Envers для проверки некоторых таблиц с отношениями.

Вот пример: https://github.com/juanca87/example-envers

Я надеюсь, что это будет полезно для вас, если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.

+0

Хороший пример –

Смежные вопросы