使用JPA进行历史跟踪

时间:2013-11-26 12:20:26

标签: java java-ee jpa

我想为我的某个模型实体实现历史记录跟踪/审核,方法是使用新表来存储日志,其中包含进行更改的用户,日期以及每次更新/插入中更改的内容。

我正在使用EclipseLink作为我的JPA提供程序,但我不想使用它的History Policy,因为提供程序将来可以更改。出于同样的原因,我不能使用Hibernate Envers

我查看了auditing support which Spring Data provides,但它似乎非常基本,它只允许您存储创建或修改实体的用户和日期,而不是更改。

我也知道JPA的prePersistpreUpdate,但具体说明:

  

通常,便携式应用程序的生命周期方法不应该   调用EntityManager或Query操作,访问其他实体   实例,或修改同一持久性内的关系   上下文。

有没有干净,简单,便携的方式来实现这个目标?

1 个答案:

答案 0 :(得分:1)

我已经使用单独的EJB服务手动完成了这项工作,该服务的职责是提取历史数据并将其另存为MAP。这是非常简陋的,只保存基本数据和关系ID,但这对我的情况来说已经足够了。

基本上我正在通过一些反思来检查持久性属性。