使用ORM跟踪对数据库字段的更改

时间:2011-01-03 16:27:43

标签: java database orm jpa

我想跟踪对特定表中每个列所做的更改。我想过将更改存储在另一个表中,其中包含以下列:id, field, and data其中field(字符串值)是目标表中已更改的列,data是新值那个领域。

当返回数据集时,我想到从目标表中检索原始数据并从表跟踪更改中更改的值,然后使用java的反射功能将更改的字段值设置为最新更改的值。

基于以上所述,我有以下问题:

  1. 我的方法有意义吗?有没有更好的方法来达到预期的效果?
  2. 我正在使用JPA 2来处理ORM,是否有任何ORM功能可以帮助实现最终目标?
  3. 由于

2 个答案:

答案 0 :(得分:3)

检查Hibernate envers和Eclipselink历史会话以进行实体审核。 JPA 2.0规范没有任何与实体审核有关的内容..

答案 1 :(得分:1)

你的方法很好。您可能需要许多“数据”字段来涵盖各种数据类型(例如日期,文本,长文本)。

我如何解决这个问题(但也很容易提供回滚功能)是使用xstream和文本差异引擎。我使用xstream来获取pojo的xml快照,然后应用用户的编辑然后抓住另一个。我将两个快照区分开来并存储差异文本。另外,通过一些努力,我可以用维基风格打印修改。