我有一个Java应用程序,它通过hibernate使用MySQL数据库。数据库实际上是用作持久层:在程序的初始加载时读取数据库,然后将记录保存在内存中。
但是,我们增加了额外的复杂性,其中另一个进程也可能会更改数据库,并且更改可以反映在Java应用程序上将非常好。但是,我并不特别喜欢每隔几秒钟就查询数据库的拉动机制,尤其是很少更新数据库。
有没有一种方法可以使回调监听数据库的变化?触发器会有所帮助吗?
或更改两个应用程序,以便Java应用程序确实是MySQL数据库的所有者,并将其作为服务公开。您正在按照建议的方式在数据库级别耦合这两个应用程序。
如果您拥有数据的一个所有者,则可以将模式更改等隐藏在服务接口的后面。您还可以使用发布/订阅机制来向感兴趣的各方发出有关数据库更改的警报。如果这些事情对您很重要,那么我将重新考虑让另一个应用程序直接访问MySQL。