我们有一个Oracle数据库,它保存了一些城市和地方等的数据。 我们有一个网络系统,我们可以操纵这些数据。 我们还有一个桌面客户端应用程序正在处理这些数据。
为了提高桌面应用程序性能并减少对DAO层的无用请求,我们在桌面应用程序中实现了一些单例类,以便在用户打开桌面应用程序之后只获取提及的城市、地点等数据一次。
最近,当客户端桌面应用程序处于正常运行状态时,我们收到了客户端的请求,为什么我们看不到使用web应用程序所做的更改。他们抱怨为什么他们必须关闭桌面应用程序并再次打开它,以查看更改。
我们知道问题在于那些单例类,但是我们不想改变它们,因为当它们不在的时候,它们将在我们系统中造成巨大的开销。为了解决这个问题,我们考虑了多种解决方案:
这是我们的书库:
你认为解决这个问题的最佳做法是什么?
发布于 2017-01-31 09:53:59
Oracle有一个名为“数据库更改通知”的功能,可用于在读取时通知--大部分是表被更改。看起来,这个特性很适合满足您的需求。指向文档的链接是这里。
简而言之,它的工作方式是桌面应用程序中的JDBC瘦驱动程序将打开一个端口,Oracle数据库将连接到该端口,并在数据更改时使用该连接推送通知。然后通过事件/侦听器API获得回调,并刷新缓存。
这种通知机制是为被读取的数据设计的--换句话说,大多数数据不会不断变化,否则就不值得缓存数据。
https://stackoverflow.com/questions/41876780
复制相似问题