Tag: 触发器

Postgres触发更新Java缓存

我有一个Java Web应用程序(部署到Tomcat的WAR),它在内存中保留缓存( Map )。 我有一个Postgres数据库,其中包含一个widgets表: widget_id | widget_name | widget_value (INT) (VARCHAR 50) (INT) 对于Widget POJO和widgets表记录之间的O / R映射,我正在使用MyBatis。 我想实现一个解决方案,只要widgets表中的值发生更改,Java缓存(Map)就会实时更新。 我可以有一个轮询组件,每隔30秒检查一次表,但轮询只是不适合这里的解决方案。 所以这就是我的建议: 编写一个调用存储过程的Postgres触发器( run_cache_updater() ) 该过程run_cache_updater.sh运行shell脚本( run_cache_updater.sh ) 脚本base-64对已更改的widgets记录进行编码,然后将编码记录cURL到HTTP URL Java WAR有一个servlet侦听cURLed URL并处理发送给它的任何HttpServletRequests 。 它base-64解码记录并以某种方式将其转换为Widget POJO。 缓存( Map )使用正确的键/值进行更新。 这个解决方案感觉很尴尬,所以我首先想知道那里的Java / Postgres大师会如何处理这种情况。 在这里轮询更好/更简单的选择(我只是顽固吗?)我还有其他/更好/更标准的解决方案吗? 如果没有,并且此解决方案是将已更改的记录从Postgres推送到应用程序层的标准方法,那么我就会扼杀如何编写触发器,存储过程和shell脚本,以便将整个widgets记录传递到cURL声明。 在此提前感谢您的帮助。

监视mysql的变化

我有一个通过hibernate使用MySQL数据库的Java应用程序。 数据库实际上用作持久层:在程序的初始加载时读取数据库,然后将记录保存在内存中。 但是,我们正在增加额外的复杂性,其他进程也可能会更改数据库,并且更改反映在Java应用程序上会很好。 然而,我并不是特别喜欢每隔几秒就拉动机制来查询数据库,特别是数据库很少更新。 有没有办法让回调来监听数据库更改? 触发会有帮助吗?

如何在hibernate中实现触发器

我想在hibernate中实现类似于触发器的东西。 我需要的是当表中的列达到特定值时,应该在另一个表中插入一行或者应该更新一些其他表。 我如何在hibernate中实现它?