Java持久层同步

时间:2014-05-23 21:08:45

标签: java persistence

情况: 我已经设置了一个基本系统来缓存TeamManager中的Team对象。基本上它只是一个HashMap,它按名称存储团队。 TeamManager还有一个IDataManager对象,它是TeamManager写入的持久层,无论是SQL数据库还是平面文件。让我们假设为了这种情况,我正在使用的是用于保存团队数据的平面文件方法。

问题: 我在TeamManager中有一个函数,“getTeam(String teamName)”,它返回对HashMap中Team对象的引用。如果另一个类调用此方法并更改Team对象内部的某些内容,我需要在持久层中对其进行更改。问题是TeamManager不知道何时对Team进行了更改以了解更新它。

问题: 解决这个问题的最佳方法是什么?

•我可以实现对持久层的定期写入,但这是一个绑定修复...

•我可以完全从TeamManager中删除HashMap,并使其仅引用持久层中的内容,但这会增加开销......

•我可以尝试将所有用于访问团队数据的setter移动到TeamManager,以便控制何时更新内容,但这会触及太多类并花费太多时间......

有人对我可能采取的措施有什么建议来解决这个问题或进一步解释我的问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

以下是我的建议:

  • 首先考虑在适用的情况下使用locking的方法。
  • 如果您使用数据库,请使用数据库索引作为主搜索属性。它将像Java中的Map一样工作,并减少与这些索引列相关的事务的时间。
  • 创建一个代理层,在更改用户时使用特定资源通知用户。根据您的平台和设计,这可能很棘手。