我计划构建一个使用 Hibernate 和 MySQL 作为其数据源的桌面应用程序。我想在多台机器上执行桌面应用程序,但我希望它们都读/写到同一个 MySQL 数据库。这甚至可能吗?当两个应用程序试图访问/修改相同的信息时,我担心的是并发问题。是否有多个 ORM 应用程序具有实时数据库同步的替代解决方案(如果不允许单个数据库)?
在stackoverflow上有一些类似的问题,但他们的答案并不让我满意。
您可以让多个基于休眠的应用程序与同一个数据库通信。在大多数情况下,这与运行多个线程与同一个数据库通信几乎相同。
如果您的休眠配置使用二级缓存,您可能会看到最常见的问题。当hibernate配置了二级缓存时,它假设缓存与底层数据库是一致的。当您有单个应用程序附加到数据库时,二级缓存可以存在于应用程序服务器的本地 RAM 中,一切都很好。
如果您有多个服务器(无论它们运行相同的应用程序还是不同的应用程序),您需要有一个由所有服务器共享的二级缓存。或者您不需要使用二级缓存。
hibernate 的二级缓存有几种分布式缓存解决方案可用 - 如果您决定走这条路,google 将帮助您研究各种选择。
同样的论点也适用于查询缓存。