繁体   English   中英

使用 Hibernate Envers 进行审计

[英]Audit Using Hibernate Envers

我正在使用 hibernate envers 来记录我的数据,它也运行良好。 这里的问题是,它在历史表中创建重复数据,即无论审计表中是否有任何更改,都在历史表中创建数据。 我只想要存储在我的历史记录表中的更改字段。 我是 hibernate envers 的新手。 我能做什么?

如果我正确理解您的问题,Envers 不会那样工作,至少不是开箱即用。

Envers 是一种提交快照审计解决方案,在提交之前,它会检查被审计的实体状态并确定是否有任何属性已被修改,并记录该实体在该时间点的所有审计字段的快照。 这意味着只有在没有修改任何属性时才会创建审核条目。

但它也使用快照方法,因为它非常适合查询 API。

考虑如果在给定修订版中查找实体的查询必须从该修订版中读取所有行回到时间的开始,迭代每一行并合并捕获的列状态以仅实例化单行结果集,则会发生低效率.

使用快照方法,它归结为以下查询,没有循环或迭代工作。

SELECT e FROM AuditedEntity e WHERE e.revisionNumber = :revisionNumber

从 I/O 的角度来看,这在数据库读取数据页和网络用于将单行结果集而不是多行结果集流式传输到客户端时效率要高得多。

在这种情况下,我想说的是,当您将其与应用程序以任何其他方式进行操作时所面临的成本和效率低下进行比较时, “空间便宜”这句话确实适用。

如果这是您希望 Envers 支持的东西,也许通过一些用户配置的策略,那么欢迎您在JIRA 中hibernate-envers记录新功能请求,我可以看看它的可行性。

我有类似的问题。

在我的情况下,错误是审计字段比数据库字段具有更高的精度。 请看我对另一个帖子的回复: https : //stackoverflow.com/a/65844949/13381019

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM