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