创建历史事件

时间:2013-09-10 10:26:49

标签: java spring hibernate

我有一个spring + JPA项目。

我想创建事件条目并将它们保存在表格中,例如:

a)身份4的实体“用户”被更改:名为“userName”的属性oldValue:“john”newValue:“johnnie”

b)收到了一封新的客户电子邮件,因此我们为此电子邮件创建了一个新的票证,此电子邮件的受让人名为:“Goku”

我的问题是:

创建此类机制的最佳做法是什么?目前我有2个想法是不够的:

1)我可以在我想创建历史事件的代码中的每个地方插入以下代码:

historyManager.createEvent(String event string,String newValue, String oldValue, Date date);

虽然这个解决方案有效,但它非常难看,而且根本不是通用的。

2)使用Hibernate Envers,这个库实际上使用简单的注释记录项目中的每个实体更改:“@Audited” 问题是这个解决方案会影响性能,说实话对我不太有吸引力。

1 个答案:

答案 0 :(得分:0)

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