更好地维护少数实体的审计方法

时间:2012-10-25 10:33:26

标签: java audit hibernate-envers

我有一个具有以下结构的Hibernate实体:

@Entity
public class A
{
  private Integer id;
  private String name;
  @OneToMany
  private List<B> bList;
}

@Entity
public class B
{
  private Integer id;
  @OneToMany
  private List<C> cList;
}

现在我想在实体“A”上维护历史记录,其中包含以下信息:

historyDate | fieldsChanged | updatedBy | createdBy

fieldsChanged列中,我想要实体A列的名称,以及是否在实体 B或C 中应用了任何更改。

现在我用谷歌搜索并找到以下几种方法来实现这些:

  1. DB上的Writer触发器
  2. 拥有Java逻辑以维护历史记录表
  3. 使用Hibernate Envers
  4. 现在我不确定从上面或其他任何方面应该采用更好的方法。

    任何建议都将受到高度赞赏......

1 个答案:

答案 0 :(得分:1)

Envers使用不同的审核方案 - 为每次更改存储实体的完整内容。答案实际上取决于你的需求。

    如果直接从各种系统访问数据库,那么
  1. 是正确的选择,用各种语言编写。
  2. 最好是你需要拥有你所写的结构
  3. 为您提供审核,但格式不同。