我有一个 spring + JPA 项目。
我想创建事件条目并将它们保存在表中,例如:
a) id 为 4 的实体“User”已更改:在名为“userName”的属性中 oldValue:“john” newValue:“johnnie”
b) 收到了一封新的客户电子邮件,因此我们为此电子邮件创建了一个新的工单,并且该电子邮件的受让人的用户名为:“Goku”
我的问题是:
创建这种机制的最佳实践是什么?目前我有两个想法还不够:
1)我可以在我想要创建历史事件的代码中的每个位置插入以下代码:
historyManager.createEvent(String event string,String newValue, String oldValue, Date date);
虽然这个解决方案有效,但它非常丑陋并且根本不通用。
2)使用 Hibernate Envers,这个库实际上用简单的注释记录了我的项目中的每个实体更改:“@Audited” 问题是这个解决方案会影响性能,而且说实话对我来说不太有吸引力。
最佳答案
我会采用恩弗斯的方法。如果性能真的成为一个问题,那么你可以通过不同的方式来解决它。例如,通过对数据进行分区,通过使用特殊的“引擎”(在 MySQL 的情况下),存储在不同的模式/目录中,...并且您几乎可以“免费”获得它,特别是与执行所有操作的选项相比靠你自己。
关于java - 创建历史事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18716454/