在我的项目中,我有一个数据库,许多客户端都连接到该数据库。并发访问和写入效果很好。现在的问题是不是每秒从数据库重新加载数据以始终具有数据的当前状态。
如果更改了数据库,Eclipselink是否提供触发机制来(自动?)重新加载数据?
一个人将如何使用此触发器?
谢谢!
最佳答案
我见过的一种解决方案是使用数据库中的触发器将JMS消息发送到您的应用程序。然后,该消息在MDB中接收到,该MDB中的EclipseLink缓存可以被无效或刷新。这种方法在Oracle数据库上效果很好,触发器将消息放入AQ表中。
我熟悉的是特定于DBMS的解决方案,但挑战始终是获取更改通知以包括表和PK值而不是ROWID,并且还要确保不向您通知您所做的更改或有某种简便的方法从您自己的更改中滤除通知。
我相信GoldenGate有助于解决此问题,但我自己尚未尝试过。
道格