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