【问题标题】:using triggers for audit columns对审计列使用触发器
【发布时间】:2018-06-04 19:44:56
【问题描述】:

在我的公司,我是一名 java 开发人员,我们使用 hibernate orm。 出于与数据相关的目的,数据架构师希望为每个数据库上的每个表提供审计列( CREATE_DATE、CREATED_BY、UPDATE_DATE、UPDATED_BY )。这似乎有点奇怪,因为我们在应用业务中不使用这些字段。

对于我们的 java 应用程序,我想,我们有两个选择:

  • 在每个休眠 dao 对象上使用这些审计字段创建一个基类。
  • 定义表触发器以更新这些列。

我应该更喜欢哪一个,为什么?还有其他建议吗?

【问题讨论】:

  • 我对数据架构师给您的选择感到非常惊讶。审计列应该由触发器设置和更新,而不是依赖于代码来管理它们。它们不是供您的代码使用,甚至不知道它们用于审核行更新以进行取证分析(如果需要)。
  • 看看 Hibernate Envers:hibernate.org/orm/envers
  • @ErwinBolwidt 我知道 envers。您是否建议使用 envers 的选项 1?
  • 我建议您使用已经存在的东西,而不是自己构建它。但是“我应该更喜欢哪一个,为什么?还有其他建议吗?”是“主要基于意见。过于广泛。”。正如您现在所问的那样,这对于 SO 格式来说不是一个好问题。请阅读help center 在这里提出好的问题。

标签: java hibernate orm triggers audit


【解决方案1】:

根据我的理解和经验,第二个选项是 2 个选项中唯一好的选项。这是因为,如果数据从应用程序外部更新/填充到表中(批处理作业/数据修复等) ) ,那么第一个选项将不起作用。

另一个选项是,如果数据更新仅通过 PL SQL 发生,您的 PL SQL 团队可以更改该代码以更新代码中的这些列。但是,如果代码很大,这将是很多工作。

总的来说,触发器似乎是最好的选择。

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2021-08-04
    • 2014-04-14
    • 2021-06-05
    相关资源
    最近更新 更多