如何在Hibernate中创建审计日志跟踪?

时间:2016-06-07 04:27:33

标签: java mysql hibernate audit-trail

以下是表结构:

id | createdby | createddate | tablename | columnname | primaryid | oldavalue | newvalue | remarks

我们得到分隔文件,其中我们有一些值在4个表中更新。四个表各有10列。我们不知道要更新什么。因此,我们只需针对一个主ID更新整行。

现在的挑战是:

  1. 如何在Hibernate中获取表名,列名?

  2. 如何获取旧值;在更新期间?如何知道我们正在更新哪个字段具有旧值,我们现在正在插入新值? (我们还没有比较字段)

3 个答案:

答案 0 :(得分:3)

您可以实现Hibernate的EmptyInterceptor。在EmptyInterceptor的方法中,您可以找到字段名称,先前值和当前值。

答案 1 :(得分:1)

我最喜欢的工具是Hibernate Envers。您只需将您的实体注释为@Audited,并且envers会处理拦截器。

答案 2 :(得分:0)

您还可以通过在执行操作之前和之后编写弹簧方面来使用Spring AOP,这将在审计表中插入数据