java - 创建历史事件

标签 java spring hibernate

我有一个 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/

相关文章:

Java Spring 风格 : factory for a category of processor for a given class

spring - JPA 事务未在方法结束时提交

java - 在 JVM 中运行 Android UI

java - RequestParam.defaultValue 值

java - 将 iOS 和 Android 客户端连接到 SockJS 后端

java - java 中 .equals() 方法的假设 - 比较对象的实例或对象的状态

hibernate - 了解 Hibernate 事务

java - 如何在操作栏中的图标和标题之间留出空间?

SharePoint 2010 Web 服务上的 Java JBoss 401 错误

java - 在 Nifi 中,带有 Hive 数据库连接池服务的自定义处理器不起作用