1

我有一个 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” 问题是这个解决方案会影响性能,老实说对我不太有吸引力。

4

1 回答 1

0

我会选择 Envers 方法。如果性能真的成为问题,那么您可以通过不同的方式解决它。例如,通过对数据进行分区,通过使用特殊的“引擎”(在 MySQL 的情况下),存储在不同的模式/目录中,......你几乎可以“免费”获得它,特别是与做所有事情的选项相比自己。

于 2013-09-10T11:49:22.963 回答