嗨,我正在研究spring和hibernate,我有一种情况,当我想在数据库中完成更改时调用一个方法,这意味着每当有新通知出现时通知,然后我的页面会自动显示通知的编号,我已经这样做了使用计时器工作,但它不好,因为它重复调用并且服务器上的负载异常增加所以请告诉我有没有办法监听数据库并仅在完成新条目 ios 或对数据进行任何更改时调用该方法根据
2 回答
如果我正确理解了您的问题,您有一个 Web 界面应该显示通知,如果有一个新的数据库条目?
然后,您首先必须选择 Jose Luis Martin 的建议之一,以便在服务器端获得通知。然后您必须将此通知转发给客户端。为此,有几种可能性:
(你已经做过的):使用轮询(每隔 x 秒从客户端向服务器发送一个请求,请求新条目): http://en.wikipedia.org/wiki/Polling_(computer_science)
让服务器将数据推送到客户端。这是更“现代”的解决方案:http ://en.wikipedia.org/wiki/Push_technology
我建议将第二种方法与 Atmosphere 等框架结合使用:https ://github.com/Atmosphere/atmosphere
该框架支持多种不同的通信方式,包括回退等。
编辑:
如果您真的只是想要服务器方法中的信息,并且信息不是 100% 精确,您还可以使用服务器上的计时器每 30 秒计算一次新项目,并为客户端请求缓存结果.
你有两个选择:
- 使用 sys_exec() 从数据库触发到 java 程序:
见https://github.com/mysqludf/lib_mysqludf_sys
- 使用休眠实体侦听器。这仅在休眠对数据库具有专有访问权限时才有效。
见http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/listeners.html