正常的方法是从java调用数据库。但根据我的情况,一些第三方应用程序正在进行插入,我的应用程序只是阅读。在这种情况下,有可能做一些事情,以便每当有新数据或数据库数据得到更新时,我希望我的java获取该数据。即db中的任何更改都会触发我的java类。通过不运行任何进程或线程,例如每隔2-5分钟运行一个进程来检查数据库,这会增加服务器上的不必要的负载,而且它也不会是活的,这意味着错过了平均时间内任何进入数据库的内容。
答案 0 :(得分:0)
这个问题可能有其他好的解决方案(请参阅我的评论),但有一种可能的快速&脏技巧是编写一个插入/更新触发器,将新插入/更新的数据写入文件。
现在,为了使事情同步,您可以制作该文件'命名管道(FIFO),提供您在* nix系统上运行。通过这种方式,您可以让Java代码对管道执行阻塞读取,并且每次有新的插入/更新时,MySQL都会写入管道(小心避免EOF)和使用者(您的Java代码) )将解锁自身,处理新数据,然后再次阻止,避免不必要的负载。
答案 1 :(得分:-1)
我认为没有办法做到这一点。
(以下可能不是答案,而是建议。) 似乎java和其他应用程序同时连接DB。我认为问题来自这里。 第三方应用应通知我的应用.. 我的应用程序应插入数据库并执行我想要的操作。那么就没有像这样的问题,我们可以做更灵活的工作。更安全.. 可能还有其他一些原因......但我希望你也考虑一下......