6.4. Configuration
6.4.1. 配置端点参数
JBoss EAP 通过 Hibernate Envers 使用实体审计来跟踪永久类的历史更改。
配置可用的端点参数
- 
							打开 应用的 persistent.xml文件。
- 根据需要添加、删除或配置 Envers 属性。有关可用属性列表,请参阅 Envers Configuration Properties。 - 示例:结束参数 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
6.4.2. 在运行时启用或禁用审计
在运行时启用或禁用实体版本审核
- 
							子类 AuditEventListener类。
- 覆盖在 Hibernate 事件中调用的以下方法: - 
									onPostInsert
- 
									onPostUpdate
- 
									onPostDelete
- 
									onPreUpdateCollection
- 
									onPreRemoveCollection
- 
									onPostRecreateCollection
 
- 
									
- 将子类指定为事件的监听程序。
- 确定是否应审计更改。
- 如果更改应该被审计,则将调用传递到超级类。
6.4.3. 配置条件审计
Hibernate Envers 使用一系列事件监听器以对各种 Hibernate 事件的响应保留审计数据。如果 Envers JAR 在类路径中,则这些监听程序会自动注册。
实施条件审计
- 
							在 persistenceHibernate 属性设置为 false。.xml 文件中将 hibernate.listeners.envers.autoRegister
- 子类要覆盖的每个事件监听程序。将条件审计逻辑放在子类中,并在应当执行审计时调用超级方法。
- 
							创建 org.hibernate.integrator.spi.Integrator的自定义实施,类似于org.hibernate.envers.event.EnversIntegrator。使用在第 2 步中创建的事件监听器子类,而不是默认的类。
- 
							将 META-INF/services/org.hibernate.integrator.spi.Integrator文件添加到 JAR。此文件应当包含实施接口的类的完全限定名称。
6.4.4. Envers 配置属性
| 属性名称 | 默认值 | 描述 | 
|---|---|---|
| 
									 | 在被审计实体名称前加上字符串,以创建保存审计信息的实体的名称。 | |
| 
									 | _AUD | 
									附加到已审计实体名称的字符串,以创建保存审计信息的实体的名称。例如,如果对表名称为  | 
| 
									 | REV | 包含修订号的审计实体中的字段名称。 | 
| 
									 | REVTYPE | 
									存放修订类型的审计实体中的字段名称。当前可能的修订类型有:  | 
| 
									 | true | 
									此属性决定是否应生成修订项,如果关系字段未拥有的更改。这可以是一对多关系中的集合,也可以是使用一对一关系中的 mapping  | 
| 
									 | true | 
									为 true 时,用于开放式锁定的属性(使用  | 
| 
									 | false | 此属性定义在删除实体时是否应将实体数据存储在修订中,所有其他属性均标记为 null(而非 ID)。这通常不需要,因为数据存在于最后一处的修订版本中。但有时候,在最后一个修订版本中访问它更为简单和高效。但是,这意味着在删除前包含的数据被存储两次。 | 
| 
									 | Null(与普通表相同) | 
									用于审计表的默认架构名称。可以使用  | 
| 
									 | Null(与普通表相同) | 
									应用于审计表的默认目录名称。可以使用  | 
| 
									 | 
									 | 
									此属性定义在持久保留审计数据时应使用的审计策略。默认情况下,仅存储了实体修改的修订版本。另外, | 
| 
									 | REVEND | 在审计实体中保存最终修订版本的列名称。只有使用了有效期审计策略时,此属性才有效。 | 
| 
									 | false | 
									此属性定义除结束修订本身外,是否应将最终修订的时间戳(数据在最后有效的位置)存储下来。这对于使用表分区从关系数据库中清除旧的审计记录非常有用。分区需要表中存在的列。只有在使用了Validity  | 
| 
									 | REVEND_TSTMP | 
									结束修订版本时间戳的列名称,即数据仍有效。只有在使用了Validity  |