如何在没有多个 cfg.xml 文件的情况下通过休眠处理多个数据库

How to handle multiple database by hibernate without multiple cfg.xml files

我们有一个基于 Java-Hibernate 的 Web 应用程序,我们在其中处理 PostgreSQL 数据库。(这是一个包含多个模式的单一数据库。)

目前我们面临可伸缩性问题,因此我们决定在多个数据库之间拆分我们的架构。

示例

问题:

注意:如果有人能为此提供tutorial/documentlink就太好了。

类似问题:Hibernate using multiple databases

(我期待类似的答案,但没有多个 cfg.xml :( )

好的,所以你的要求不是

only one hibernate config file

但能够

create new sessionFactory without stopping the server.

您引用的问题中的代码如下所示:

Configuration config = new Configuration().configure("<complete path to your cfg.xml file>");
SessionFactory sessionFactory = config.buildSessionFactory();

因为您可以看到在获取 sessionFactory 之前首先有一个配置对象。在构建会话工厂之前,只需 fiddle 在代码中使用它即可:

Configuration config = new Configuration().configure("<complete path to your cfg.xml file>");
config.setProperty("datasource", new_datasource_to_the_new_database)
SessionFactory sessionFactory = config.buildSessionFactory();
  • 用您在当前 hibernate.cfg.xml 文件中使用的实际密钥替换 "datasource" 密钥,以便覆盖它。构建新数据源,与当前构建它的方式相同,指向新数据库。
  • 将会话工厂保存在可访问的位置
  • 进行处理时,选择正确的sessionFactory并从那里获取会话。