2010-03-17 66 views
0

我有一个模块,它使用Hibernate作为ORM解决方案,EHCache作为二级缓存。 我有另一个插入和更新数据库的独立模块。 我需要的是当插入或更新行时能够触发事件。 比方说,我有一个Customers表,它被映射到一个Customer实体。 我想要一些程序通知我已添加新的客户。 关于第二个独立模块,它也使用Hibernate,但至少目前它们没有连接(我指出了这一点,好像有人认为我必须在它们之间共享Hibernate会话(或类似的东西)),那么这个是我会考虑的)。 请注意,我对Hibernate的使用经验有限。 在此先感谢休眠触发器(也许这叫做拦截器)

回答

1

Hibernate的拦截可能是你所需要的

http://docs.jboss.org/hibernate/stable/core/reference/en/html/events.html

拦截器的接口提供 回调从会议到 应用程序,允许应用程序 检查和/或在保存,更新,删除 或加载之前操纵持久对象 的 属性。

有一个简单的如何写入和配置它的例子。

还有Event系统,它是SQL级别操作的低级钩子,但这可能比您需要的复杂一点。

+0

首先感谢您的评论,这个机制是否依赖于我的实体的所有更改都在同一个会话中生成的事实?因为我的休眠会话可能会在某些时刻“突然看到”来自数据库的新对象 – Ittai 2010-03-17 11:39:35