Hibernate ORM

Envers

Envers 模块是 Hibernate 的核心模型,可与 Hibernate 和 JPA 一起使用。事实上,您可以在 Hibernate 工作的任何地方使用 Envers,无论是独立的、在 WildFly 或 JBoss AS、Spring、Grails 等内部。

Envers 模块旨在为实体类提供一个简单的审计/版本控制解决方案。

功能

  • 对 JPA 规范定义的所有映射进行审计

  • 对扩展 JPA 的一些 Hibernate 映射进行审计,例如自定义类型以及“简单”类型的集合/映射,如字符串、整数。

  • 使用“修订实体”记录每个修订版本的数据

  • 查询实体及其关联的歷史快照

快速入门

为了使 Envers 构建必要的历史审计表并存储对审计实体及其关联所做的更改,以下是一切所需的入门步骤。

  • hibernate-envers 依赖项添加到您的类路径中。

  • 使用 @Audited 注解对您的实体或实体属性进行注解。

  • 确保您的实体使用不可变的唯一标识符(主键)。

一个简单的例子

@Entity
public class Person {
    @Id
    @GeneratedValue
    private Integer id;

    @Audited
    private String name;

    @Audited
    private String surname;

    @Audited
    @ManyToOne
    private Address address;
}

您可以在 入门指南 中找到 Envers 的分步教程。

完整的文档可在 用户指南 中找到。

版本控制

与源代码版本控制类似,Envers 使用 **版本** 的概念。

版本标识对实体及其关联的所有审计属性在事务边界内发生的更改的集合。这些版本是全局的且是数字型的。

AuditReader API 提供了许多方法来查询特定版本下的实体,并检索该实体在该特定版本下看起来像的部分视图。它还允许您访问与实体类型相关联的版本列表,或按日期范围限制。该 API 还提供了一种获取版本元数据的方法,以便您可以知道更改发生的时间,以及您可能根据实现需要存储在版本实体上的任何其他自定义属性。

返回顶部