我有一个 Java多客户端应用程序,它使用通过 Hibernate 在所有客户端之间共享的数据库。 我想知道如何保证客户始终拥有数据库中的最新数据。
即使我们没有使用任何类型的缓存并且客户端总是从数据库加载最新数据,客户端也总是以gui元素显示或应用程序状态的形式存储一些可能过时的数据。
即便如此,没有缓存的应用程序也会非常反应迟钝。
我需要的是保持缓存始终是最新的(通过数据库更改事件,这将触发每个客户端命中数据库)并在缓存中发生更改时通知gui并使用新数据更新自身来自数据库。
我检查了 Terracotta ,这似乎是我通过管理缓存一致性和客户群集所需要的,但到目前为止看起来好像Terracotta只管理分布式Map,Queue,MultiMap,ExecutorService但是没有t帮助在数据库的上下文中,它可以将Map共享为分布式缓存。
是否有人指出使用Hibernate数据库的多客户端应用程序如何保证客户端上的数据始终与数据库保持同步,并在另一个客户端更改数据库时通知每个客户端?
答案 0 :(得分:0)
关于Terracotta产品中的通知:请查看this article。 关于Terracotta产品中的缓存选项:查看this article。 可能它会帮助你。
此外,您可以自己在客户端之间实现某种数据更新协议。 JGroups会帮助你走这条路。