使用Hibernate将两个或多个应用程序连接到同一个数据库

8
我计划构建一个桌面应用程序,该程序将使用Hibernate和MySQL作为数据源。我希望在多台机器上执行桌面应用程序,但是我希望它们都可以读写同一个MySQL数据库。这是否可能?我的担忧是当两个应用程序尝试访问/修改相同的信息时会出现并发问题。如果不允许单个数据库,那有没有多个ORM应用程序实现实时数据库同步的替代解决方案?

在stackoverflow上有一些类似于我的问题,但它们的答案并没有满足我的要求。


:S 这个并发属于处理 MySQL 引擎.. 不是你的应用程序。数据库管理系统会为您完成这个任务。 - nachokk
你必须确保已经配置好了 MySQL,因为默认设置(虽然可以提供卓越的性能)并不支持事务安全。 - chrylis -cautiouslyoptimistic-
1个回答

10
您可以有多个基于 Hibernate 的应用程序连接到同一个数据库。大多数情况下,这与多个线程连接到同一个数据库差不多。
最常见的问题是,如果您的 Hibernate 配置使用了二级缓存,那么很可能会出现问题。当 Hibernate 配置了二级缓存时,它假定缓存与底层数据库一致。当您有一个单独的应用程序连接到数据库时,二级缓存可以存在于应用服务器的本地 RAM 中,一切都很好。
如果您有多个服务器(无论它们运行相同的应用程序还是不同的应用程序),则需要拥有单个二级缓存,该缓存由所有服务器共享。否则,您需要不使用二级缓存。
Hibernate 的二级缓存有几种分布式缓存解决方案-如果您决定采取这种路线,谷歌可以帮助您研究各种选择。
同样的论点也适用于查询缓存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接