我正在开发一个带有 Java EE 和 JPA 的系统,用户可以在其中更改实体。需要在需要时追溯更改。因此,每次进行更新时,都必须记录所有更改和用户。记录更改的最佳方法是什么。
例如,有一个名为 Investigation 的实体。它具有名称、类别、价格、数量等属性。用户可以搜索单个调查并在一个实例中更改名称,在另一个实例中,另一个用户可以更改价格。所有这些更改完成的场合以及更改的用户都需要在需要时进行追溯。
此链接中描述的一种方法是将对象标记为旧编辑并创建具有更新值的新对象,但问题是来自不同实体的其他几个对象引用旧对象。
此链接中描述的另一种方法是在新表中使用版本控制字段。在 JPA 中可以通过创建一个扩展主实体的新实体来实现。
在这些方法中,最佳实践是什么?是否有任何其他优化方法可以在 Java Persistence 中保留记录编辑历史?