1

我正在开发一个带有 Java EE 和 JPA 的系统,用户可以在其中更改实体。需要在需要时追溯更改。因此,每次进行更新时,都必须记录所有更改和用户。记录更改的最佳方法是什么。

例如,有一个名为 Investigation 的实体。它具有名称、类别、价格、数量等属性。用户可以搜索单个调查并在一个实例中更改名称,在另一个实例中,另一个用户可以更改价格。所有这些更改完成的场合以及更改的用户都需要在需要时进行追溯。

此链接中描述的一种方法是将对象标记为旧编辑并创建具有更新值的新对象,但问题是来自不同实体的其他几个对象引用旧对象。

此链接中描述的另一种方法是在新表中使用版本控制字段。在 JPA 中可以通过创建一个扩展主实体的新实体来实现。

在这些方法中,最佳实践是什么?是否有任何其他优化方法可以在 Java Persistence 中保留记录编辑历史?

4

2 回答 2

2

如果您不介意使用 Hibernate,Envers可能对您来说很有趣。它自动执行审计,可选择附加元数据,如当前用户。

对于每个被审计的实体,它都会创建一个包含以前版本的历史表。

于 2012-04-04T08:03:43.530 回答
2

EclipseLink 支持历史。

见, http://wiki.eclipse.org/EclipseLink/Examples/JPA/History

于 2012-04-04T14:05:50.987 回答