我有一个 spring + JPA 项目。
我想创建事件条目并将它们保存在一个表中,例如:
a) id 为 4 的实体“用户”已更改:在名为“userName”的属性中 oldValue:“john” newValue:“johnnie”
b) 收到了一封新的客户电子邮件,因此我们为此电子邮件创建了一个新票证,此电子邮件的受让人是名为“Goku”的用户
我的问题是:
创建这种机制的最佳实践是什么?目前我有两个想法是不够的:
1)我可以在我想创建历史事件的代码中的每个位置插入以下代码:
historyManager.createEvent(String event string,String newValue, String oldValue, Date date);
尽管此解决方案有效,但它非常丑陋且根本不通用。
2)使用 Hibernate Envers,这个库实际上用简单的注释记录了我项目中的每个实体更改:“@Audited” 问题是这个解决方案会影响性能,老实说对我不太有吸引力。