【问题标题】:Spring Data JPA and Spring Boot auditing with Hibernate Envers使用 Hibernate Envers 进行 Spring Data JPA 和 Spring Boot 审计
【发布时间】:2017-07-09 11:22:01
【问题描述】:

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

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

所以我的问题是:

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

2) 我们有原生查询、HQL 和 Spring 数据 JPA 更新/保存/删除动态查询,那么 Hibernate 环境是否能够跟踪所有对象?

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    是的,Hibernate Envers 专门与 Hibernate ORM 直接集成,并且由于 Spring Data JPA 已经与 Hibernate ORM 集成,您可以立即使用它。

    我们有原生查询、HQL 和 Spring 数据 JPA 更新/保存/删除动态查询,那么 Hibernate 环境是否能够跟踪所有对象?

    只要您通过 Session 保存/更新或 EntityManager 的持久/合并操作来操作实体,Hibernate 就会引发 Envers 跟踪您的更改所需的事件。

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

    【讨论】:

    • 非常感谢您的回复,好的,我现在很清楚 Native SQL 不会为 Hibernate 生成任何事件,因此不会审核。由实体管理器管理的任何 HQL 都会生成审计。 Spring数据JPA动态查询呢? (例如 @Query(value="delete from Employee emp where emp.id = ?1 ") ,这是否会创建 Audit ?
    • 我认为 Spring 数据 JPA 查询将在事务中,我应该能够对其进行审核。谢谢。
    【解决方案2】:

    这是可能的,而且很容易! 我使用这些技术做了一个示例项目:Spring boot、Spring data jpa 和 hibernate with Envers 来审计一些有关系的表。

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 感谢您的回复,请您回复问题2。
      猜你喜欢
      • 1970-01-01
      • 2018-02-04
      • 2016-03-03
      • 2020-03-23
      • 2018-04-18
      • 1970-01-01
      • 2017-05-22
      • 2019-11-17
      • 2012-11-15
      相关资源
      最近更新 更多