Spring 数据 JPA 和 Spring 使用 Hibernate Envers 进行引导审计

Spring Data JPA and Spring Boot auditing with Hibernate Envers

我正在为我的项目使用 Spring Data JPA 和 Spring Boot。

我有对象的审计要求(Create/Update/Delete)。我可能还需要对特定对象进行审核修订。 我在网上查过 Spring Data Envers 无法进行修订并且不跟踪删除?

所以我的问题是:

1) 我们可以将 Hibernate Envers 与 Spring 数据 JPA 集成吗?

2) 我们有本机查询、HQL 和 Spring 数据 JPA update/save/delete 动态查询,那么 Hibernate envers 是否能够跟踪所有对象?

由于我是审计新手,请让我知道以上问题。

谢谢。

是的,Spring Data JPA 和 Hibernate Envers 集成没有问题。它跟踪保存、更新和删除操作。 您只需在 class 上方添加 @Audited 注释。

Can we integrate Hibernate envers with Spring data JPA?

是的,Hibernate Envers 专门直接与 Hibernate ORM 集成,并且由于 Spring Data JPA 已经与 Hibernate ORM 集成,你得到这个 out-of-the-box。

We have native queries, HQLs and Spring data JPA update/save/delete dynamic queries, so would Hibernate envers be able to track object for all?

只要您通过 Session save/update 或 EntityManager 的 persist/merge 操作来操作实体,Hibernate 就会为 Envers 引发必要的事件以跟踪您的更改。

如果你使用NativeSQL或者JPA的CriteriaUpdate/CriteriaDelete操作来操作数据库记录,那么noEnvers会not 选择那些更改。这是因为 Hibernate 不会为那些允许 Envers 审核这些更改的批量或无状态操作引发事件。

这是可能的,而且很容易! 我使用这些技术做了一个示例项目:Spring boot,Spring data jpa 和 hibernate with Envers to audit some tables with relationships。

示例如下:https://github.com/jcalvopinam/example-envers

希望对你有用,如果有什么问题,请告诉我。