【发布时间】:2009-12-21 19:42:41
【问题描述】:
几个关系数据库表由驻留在进程中的单个对象缓存管理。当缓存被提交时,表被更新。 DB 关系表由常规 SQL 查询更新,而不是像 hibernate 这样更花哨的东西。
最终,其他进程在不相互通信的情况下进入了修改这个对象的业务,即每个进程都会初始化这个对象(从 DB 读取)并更新它(提交到 DB),而其他进程不会知道它保留陈旧的缓存。
我必须修复这个工作流程。我想到了几种方法。 一种是使这个对象成为一个mBean。因此,对象将驻留在一个进程上,每个进程最终都会通过 mBean 方法调用修改该进程中的对象。
但是,这种方法有几个问题。 1) 这个缓存返回的每个对象都是一个 mBean,这可能会使方法调用变得非常冗长。 2)还要求每个进程都应该看到数据库的一致数据模型(缓存),并且如果可能的话,它应该将其内容合并到数据库中。 (如交易)。如果数据库被其他进程显着更新,则合并失败是可以的。
Java 中有哪些技术可以帮助解决这个问题?
【问题讨论】:
标签: java caching database concurrency mbeans