在每次更改时保留整个JPA实体

时间:2015-03-22 21:42:09

标签: java hibernate jpa orm audit

我正在使用Hibernate后端处理应用程序。我能够做的事情之一是让异步事件处理程序触发JPA实体对象更新。棘手的部分是,一旦JPA实体更新,就不再有对原始对象的持久引用。

最终目标是存储原始更新的实体,使异步组件可以完全看到它们 。我可以想出几种可能的方法来解决这个问题,但它们都让我觉得很复杂。

  • 序列化原始对象,将其存储在某个地方的数据库中,并以异步方式引用它
  • 序列化更新的对象,将其作为JMS消息发送,并异步更新数据库
  • 创建单独的审核对象以跟踪更改并重播

那种东西有没有更简单的模式?或者这只是我应该接受的复杂性?

2 个答案:

答案 0 :(得分:1)

Audit4j将有助于异步保存您的对象。但它不会为JPA对象更改提供内置支持。但是可能有一种方法可以通过解决方法来实现。

答案 1 :(得分:1)

在我看来,Hibernate Envers可能很方便,在这种情况下,你有一个日志,每个对象都有变化http://docs.jboss.org/envers/docs/