首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法来实现每行的审计跟踪。

方法来实现每行的审计跟踪。
EN

Stack Overflow用户
提问于 2011-05-18 18:15:04
回答 2查看 374关注 0票数 1

我想向我所有的表中添加两列Create Time & Modify Time来捕获审计跟踪.In,将来这些字段可能会用于对表进行分区。请建议一下做这件事的最佳方法是什么?在DB中通过一些触发器或通过代码更新这些值是明智的吗?我们使用Hibernate API与Oracle 11g通信。

EN

回答 2

Stack Overflow用户

发布于 2011-05-18 18:17:52

既然您已经在使用Hibernate,那么看看Hibernate Envers

Envers项目旨在实现对持久类的简单审计/版本控制。您所要做的就是用@Audited注释您想要审计的持久化类或它的一些属性。对于每个被审计的实体,将创建一个表,该表将保存对该实体所做更改的历史记录。然后,您可以轻松地检索和查询历史数据。

这是更重量级的解决方案,但让您的应用程序完全控制。

或者,您可以通过Oracle PL/SQL触发器执行此操作,但您的应用程序对此的控制有限。

票数 1
EN

Stack Overflow用户

发布于 2011-05-18 18:21:24

这有好处也有坏处。

就我个人而言,我使用触发器。

但是,当您有一个主表和许多想要共享其审计跟踪的相关表时,这样做会导致一个有趣的边缘情况。比方说订单+订单行+许多其他与订单相关的表。在本例中,要审计的有趣数据是订单,因此订单应该包含与审计相关的详细信息。如果您有一个触发器,用于每次插入/更新/删除订单行+许多其他相关的表,那么性能最终会受到影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6043065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档