Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring数据审核数据库记录更改_Java_Spring_Hibernate_Jpa_Spring Data - Fatal编程技术网

Java 使用Spring数据审核数据库记录更改

Java 使用Spring数据审核数据库记录更改,java,spring,hibernate,jpa,spring-data,Java,Spring,Hibernate,Jpa,Spring Data,我需要审核一些DB表上的所有更改。例如,对于给定的员工,我需要知道所有地址以及该字段被修改的日期。实际上我使用的是Spring数据、Hibernate和JPA。一个很好的选择是使用HibernationEnvers,但问题是我无法使用Spring数据获取历史记录。另一个选项是有一个Employee_history表,但我看不到从两个不同的表中获取员工记录的方法(我想在Employee表中插入,但从Employee和Employee_history中获取数据)。有没有其他方法可以做到这一点?您必须

我需要审核一些DB表上的所有更改。例如,对于给定的员工,我需要知道所有地址以及该字段被修改的日期。实际上我使用的是Spring数据、Hibernate和JPA。一个很好的选择是使用HibernationEnvers,但问题是我无法使用Spring数据获取历史记录。另一个选项是有一个Employee_history表,但我看不到从两个不同的表中获取员工记录的方法(我想在Employee表中插入,但从Employee和Employee_history中获取数据)。有没有其他方法可以做到这一点?

您必须回答的第一个问题应该是您需要的审计级别。一个简单的变更列表就足够了吗?字符串表示足够好吗?或者,您是否希望能够支持您的实体的修订版,以便“不费吹灰之力”返回并获取修订版X的数据

如果一个更改列表足够了,并且您仍然使用hibernate,那么我会选择一个
HibernateEventListener
(不是JPA),因为您已经在postevents中获得了所有更改。不需要自己创建增量

另一方面,Envers非常容易集成和配置。用@Audited注释实体就足以获得“完整”版本支持。我认为,不能直接使用Spring数据查询修订实体这一事实是次要的,因为您总是可以编写
AuditReaderRepository
bean并直接使用hibernate audit查询接口。在本例中,在两个修订之间摆弄更改列表将留给您,这基本上意味着获取修订并确定它们之间的增量。在本例中,Envers的主要优点是用户表示仍然是一个用户类,而不仅仅是一个字符串(creator f.e.)

这取决于您希望支持哪一级别的审计,我将采用所需的最小实现。关于在www上选择什么样的审计策略,有一些不错的博客。

使用Spring数据环境:)

“此项目是Spring Data JPA项目的扩展,允许访问由Hibernate Envers管理的实体修订。”


我的应用程序每天都会刷新数据,但另一部分需要知道实体某些字段中发生的所有更改。然后我必须向他们展示,所以如果能够使用我的实体并接收员工的实例(例如,而不是字符串),那就太好了。这就是为什么Envers对我来说听起来很棒,但我在配置它时遇到了问题。配置有什么问题?我所要做的就是将envers jar添加到war中,并在我想要审计的类上添加@audited注释。我遇到的唯一一个小问题是与未审核实体的实体关系,但我只是在关系定义上添加了另一个注释,以不审核这些实体(@auditmode?不确定atm)。恩弗斯为我工作。我使用最新的hibernate 4.2See Spring Data Envers路线图供参考,Envers在发布时内置于Spring数据中