6.3. 审计策略


6.3.1. 关于审计策略

审计策略定义了审计信息的持久性、查询和存储方式。Hibernate Envers 目前有两种审计策略:

默认审计策略
  • 此策略将审计数据与开始修订一起保留。对于在审计表中插入、更新或删除的每一行,在审计表中插入一行或多行,以及其有效期的开始修订。
  • 插入后不会更新审计表中的行。对审计信息查询使用子查询来选择审计表中适用的行,这些行速度慢且难以索引。
有效期审计策略
  • 此策略存储启动修订以及审计信息的结束修订。对于在审计表中插入、更新或删除的每一行,在审计表中插入一行或多行,以及其有效期的开始修订。
  • 同时,上一审计行(如果可用)的结束修订字段被设置为这个修订版本。然后,对审计信息的查询可以在 开始和结束修订版本之间 使用,而不是子查询。这意味着保留审计信息的速度稍慢,因为增加了更新,但检索审计信息的速度要快得多。
  • 这也可以通过添加额外的索引来改进。

如需有关审计的更多信息,请参阅 关于审计持久类。要为应用设置审计策略,请参阅 设置审计策略

6.3.2. 设置审计策略

JBoss EAP 支持两种审计策略:

  • 默认审计策略
  • 有效期审计策略
定义审计策略

在应用的 persistence .xml 文件中配置 org.hibernate.envers. audit_strategy 属性。如果在 persistence.xml 文件中未设置 属性,则使用默认的审计策略。

设置默认 审计策略

<property name="org.hibernate.envers.audit_strategy" value="org.hibernate.envers.strategy.DefaultAuditStrategy"/>

设置 Validity Audit 策略

<property name="org.hibernate.envers.audit_strategy" value="org.hibernate.envers.strategy.ValidityAuditStrategy"/>

6.3.3. 将审计支持添加到 Jakarta Persistence Entity

流程

JBoss EAP 通过 Hibernate Envers 使用实体审核来跟踪永久类的历史更改。本节介绍添加对 Jakarta Persistence 实体的审计支持。

将审计支持添加到 Jakarta Persistence Entity

  1. 配置可用的审计参数以适合部署。详情请参阅 配置 Envers 参数
  2. 打开 Jakarta Persistence 实体进行审计。
  3. 导入 org.hibernate.envers.Audited 接口。
  4. @Audited 注释应用到要审核的每个字段或属性,或将它应用到整个类。

    示例:审计两个字段

    import org.hibernate.envers.Audited;
    
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Column;
    
    @Entity
    public class Person {
        @Id
        @GeneratedValue
        private int id;
    
        @Audited
        private String name;
    
        private String surname;
    
        @ManyToOne
        @Audited
        private Address address;
    
        // add getters, setters, constructors, equals and hashCode here
    }

    示例:审计最终类

    import org.hibernate.envers.Audited;
    
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Column;
    
    @Entity
    @Audited
    public class Person {
        @Id
        @GeneratedValue
        private int id;
    
        private String name;
    
        private String surname;
    
        @ManyToOne
        private Address address;
    
        // add getters, setters, constructors, equals and hashCode here
    }

为审核配置了 Jakarta Persistence 实体时,将创建一个名为 _AUD 的表来存储历史更改。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部