首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当有一些更新时,单例模式会产生一些问题。

当有一些更新时,单例模式会产生一些问题。
EN

Stack Overflow用户
提问于 2017-01-26 15:19:43
回答 1查看 80关注 0票数 1

我们有一个Oracle数据库,它保存了一些城市和地方等的数据。 我们有一个网络系统,我们可以操纵这些数据。 我们还有一个桌面客户端应用程序正在处理这些数据。

为了提高桌面应用程序性能并减少对DAO层的无用请求,我们在桌面应用程序中实现了一些单例类,以便在用户打开桌面应用程序之后只获取提及的城市、地点等数据一次

最近,当客户端桌面应用程序处于正常运行状态时,我们收到了客户端的请求,为什么我们看不到使用web应用程序所做的更改。他们抱怨为什么他们必须关闭桌面应用程序并再次打开它,以查看更改。

我们知道问题在于那些单例类,但是我们不想改变它们,因为当它们不在的时候,它们将在我们系统中造成巨大的开销。为了解决这个问题,我们考虑了多种解决方案:

  1. 在数据库中创建一个具有类似于数据列(城市、地点等)的整数列名的表,并在有用于跟踪更改的更新(轻量级解决方案)时自动增加值。
  2. 使用数据库功能
  3. 每当发生更新时通知客户端应用程序的通知系统。
  4. 数据库中的一种缓存机制,它缓存那些最近更改的表,并在用户有类似请求时为他们服务。

这是我们的书库:

  • 我们的桌面应用程序是swing应用程序
  • 我们的Web应用程序是JSF
  • JSF和swing的业务层都是EJB
  • 我们的JSF和swing的Dao层是Eclipse

你认为解决这个问题的最佳做法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-31 09:53:59

Oracle有一个名为“数据库更改通知”的功能,可用于在读取时通知--大部分是表被更改。看起来,这个特性很适合满足您的需求。指向文档的链接是这里

简而言之,它的工作方式是桌面应用程序中的JDBC瘦驱动程序将打开一个端口,Oracle数据库将连接到该端口,并在数据更改时使用该连接推送通知。然后通过事件/侦听器API获得回调,并刷新缓存。

这种通知机制是为被读取的数据设计的--换句话说,大多数数据不会不断变化,否则就不值得缓存数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41876780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档