如何在数据库中更改时调用java操作

时间:2013-10-18 06:57:52

标签: mysql spring hibernate

我正在使用spring和hibernate,我有一种情况,当我想在数据库中进行更改时调用方法意味着每当有新通知时通知,然后我的页面会自动显示通知,我使用计时器完成了这项工作,但它并不好,因为它反复调用并且服务器上的负载异常增加所以请告诉我有没有办法监听数据库并只在新的条目完成或任何更改时调用方法基于数据库

2 个答案:

答案 0 :(得分:0)

您有两种选择:

  • 使用sys_exec()从数据库触发到java程序:

请参阅https://github.com/mysqludf/lib_mysqludf_sys

  • 使用hibernate实体监听器。这只有在hibernate对数据库具有访问权限的情况下才有效。

请参阅http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/listeners.html

答案 1 :(得分:0)

如果我已正确理解您的问题,您有一个网络界面,如果有新的数据库条目,应该会显示通知吗?

然后你首先要选择Jose Luis Martin的建议之一,以便在服务器端发出通知。然后,您必须将此通知转发给客户端。为此,有几种可能性:

  1. (您已经做过的事情):使用轮询(每隔x秒从客户端向服务器发送请求,请求新条目):http://en.wikipedia.org/wiki/Polling_(computer_science)

  2. 让服务器将数据推送到客户端。这是更“现代”的解决方案:http://en.wikipedia.org/wiki/Push_technology

  3. 我建议将第二种方法与Atmosphere等框架结合使用:https://github.com/Atmosphere/atmosphere

    这个框架支持几种不同的沟通方式,包括后备等。


    编辑:

    如果您真的只想要服务器方法中的信息,信息不是100%精确,您还可以使用服务器上的计时器来计算每30个新项目秒和有点缓存客户端请求的结果。