Java监视器在数据库中的变化 - Hibernate和envers

时间:2012-01-11 11:25:30

标签: java hibernate hibernate-envers

我正在编写一个服务器端应用程序来监视数据库的更改,我打算用Hibernate来做这件事。我想设置一个监听器,以便如果对数据进行任何更改,任何已注册的观察者都可以被告知有更新并发送单独的请求来拉它。

我已经阅读过Hibernate envers以及AuditEventListener。我的问题是,虽然看到我的应用程序只会获取数据而不设置它,但是Envers侦听器是否可以监听不是由我的应用程序生成的表中的更改?

1 个答案:

答案 0 :(得分:1)

更新:

不,侦听器只是NHibernate中的挂钩,它只监听Hibernate会话中设置Enverslisteners的更改。

您正在寻找的是触发器或数据库事件。我使用触发器listennotify对Postgresql进行了概念验证,这似乎在某些条件下有效。虽然它对于Postgresql所使用的架构对于支持某种通知系统的每个SQL数据库都是相同的。

对于Oracle:

  • 为更改see here
  • 创建回调
  • 在某些表格中写下更改信息
  • 在您的应用中轮询更改信息表,以查看是否有更改并处理它们