6.3. 审计策略
6.3.1. 关于审计策略 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
审计策略定义了审计信息的持久性、查询和存储方式。Hibernate Envers 目前有两种审计策略:
- 默认审计策略
- 此策略将审计数据与开始修订一起保留。对于在审计表中插入、更新或删除的每一行,在审计表中插入一行或多行,以及其有效期的开始修订。
- 插入后不会更新审计表中的行。对审计信息查询使用子查询来选择审计表中适用的行,这些行速度慢且难以索引。
- 有效期审计策略
- 此策略存储启动修订以及审计信息的结束修订。对于在审计表中插入、更新或删除的每一行,在审计表中插入一行或多行,以及其有效期的开始修订。
- 同时,上一审计行(如果可用)的结束修订字段被设置为这个修订版本。然后,对审计信息的查询可以在 开始和结束修订版本之间 使用,而不是子查询。这意味着保留审计信息的速度稍慢,因为增加了更新,但检索审计信息的速度要快得多。
- 这也可以通过添加额外的索引来改进。
6.3.2. 设置审计策略 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
JBoss EAP 支持两种审计策略:
- 默认审计策略
- 有效期审计策略
定义审计策略
在应用的 persistence 属性。如果在 .xml 文件中配置 org.hibernate.envers. audit_strategypersistence.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
- 配置可用的审计参数以适合部署。详情请参阅 配置 Envers 参数。
- 打开 Jakarta Persistence 实体进行审计。
-
导入
org.hibernate.envers.Audited接口。 将
@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 的表来存储历史更改。