2009-10-28 108 views
2

是否有可用于订阅Hibernate或任何其他主流O/R映射框架的域对象更改的解决方案?例如,如果我在一个名为“Apple”的数据库中有一个表格,我希望能够在Apple对象发生变化时通知我“或者在任何Apple对象的字段”颜色“发生变化时通知我。当然,我希望不仅仅是“改变了事情”的通知,而是更改对象的ID列表或更改对象的列表。这样的解决方案是可扩展的。更改域对象的通知(Hibernate/Java)

总结要求:

  1. 所有更改到一个数据库将经历一个ORM
  2. 这应该是一个完整的解决方案,它可能将使用表达式的订阅像“认购问题q where q.title like'%hibernate%'“其中”Question“是一个实体(Java对象映射到数据库中的表)我对更新感兴趣。不需要是字符串查询,但应该有通用的方式来发出请求。

回答

3

生成这些通知的所有更改是通过ORM执行还是可能通过JDBC或其他访问同一数据库的应用程序更改数据?

如果所有更改都通过ORM并且您正在使用Hibernate,那么您可以使用Hibernate的interceptors and events。另一方面,如果数据的所有更改都不通过ORM,并且处理通知的代码相当简单,那么数据库触发器可能是更好的选择。

+0

嗨,唐。虽然Hibernate拦截器和事件可以帮助我实现我自己的解决方案,但我正在寻找一些完整的,可以使用的东西。请参阅更新的问题。谢谢。 – Vladimir 2009-10-28 22:12:55