如何在没有多个 cfg.xml 文件的情况下通过休眠处理多个数据库
How to handle multiple database by hibernate without multiple cfg.xml files
我们有一个基于 Java-Hibernate 的 Web 应用程序,我们在其中处理 PostgreSQL 数据库。(这是一个包含多个模式的单一数据库。)
目前我们面临可伸缩性问题,因此我们决定在多个数据库之间拆分我们的架构。
示例:
- 之前我们有一个名为 "mydb" 的数据库。
- 现在我们拆分数据库,如 "mydb_1"、"mydb_2"、"mydb_3",等等...
(随着负载的增加,我们将创建新的数据库。)
问题:
- 如何从一个*.cfg.xml管理多个数据库? (我们不想每次都引入多个 *.cfg.xml(对于每个数据库)。)
- 这可以用较新的休眠版本实现吗? (我们准备升级我们的 Hibernate 版本)
- 我们需要创建会话工厂池吗? (我认为这是一个坏主意和想法......:))
注意:如果有人能为此提供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并从那里获取会话。
我们有一个基于 Java-Hibernate 的 Web 应用程序,我们在其中处理 PostgreSQL 数据库。(这是一个包含多个模式的单一数据库。)
目前我们面临可伸缩性问题,因此我们决定在多个数据库之间拆分我们的架构。
示例:
- 之前我们有一个名为 "mydb" 的数据库。
- 现在我们拆分数据库,如 "mydb_1"、"mydb_2"、"mydb_3",等等... (随着负载的增加,我们将创建新的数据库。)
问题:
- 如何从一个*.cfg.xml管理多个数据库? (我们不想每次都引入多个 *.cfg.xml(对于每个数据库)。)
- 这可以用较新的休眠版本实现吗? (我们准备升级我们的 Hibernate 版本)
- 我们需要创建会话工厂池吗? (我认为这是一个坏主意和想法......:))
注意:如果有人能为此提供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并从那里获取会话。