使用Hibernate Envers进行Spring Data JPA和Spring Boot审计

时间:2017-02-20 08:59:38

标签: hibernate spring-boot spring-data-jpa hibernate-envers auditing

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

我有对象的审核要求(创建/更新/删除)。我可能还需要获取特定对象的审核修订版。 我已经在网上检查过Spring Data Envers无法修改并且没有跟踪删除?

所以我的问题是:

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

2)我们有本机查询,HQL和Spring数据JPA更新/保存/删除动态查询,那么Hibernate envers能够跟踪所有对象吗?

由于我是审计新手,请告诉我上述问题。

谢谢。

3 个答案:

答案 0 :(得分:7)

这是可能的,很容易! 我使用这些技术做了一个示例项目:Spring启动,Spring数据jpa和带有Envers的hibernate来审计一些关系表。

以下是示例:https://github.com/juanca87/example-envers

我希望它对你有用,如果你有任何问题,请告诉我。

答案 1 :(得分:6)

  

我们可以将Hibernate envers与Spring数据JPA集成吗?

是的,Hibernate Envers直接与Hibernate ORM直接集成,而且由于Spring Data JPA已经与Hibernate ORM集成,因此您可以开箱即用。

  

我们有本机查询,HQL和Spring数据JPA更新/保存/删除动态查询,那么Hibernate envers能够跟踪所有对象吗?

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

如果您使用Native SQL或JPA的CriteriaUpdate / CriteriaDelete操作来操作数据库记录,那么没有 Envers将拾取这些更改。这是因为Hibernate不会为允许Envers审核这些更改的批量或无状态操作引发事件。

答案 2 :(得分:0)

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