繁体   English   中英

在休眠状态下动态连接到数据库

[英]Connect to a database dynamically in hibernate

因此,我有多个可插拔数据库(PDB),我想使用Hibernate动态连接到其中任何一个。 如何实现这种功能?

要连接到PDB1(对于其他PDB同样如此),我需要:

protected void setupPdb1() {
    final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
            .configure("hibernate-1.cfg.xml") // configures settings from hibernate.cfg.xml
            .build();
    try {
        sessionFactory1 = new MetadataSources(registry).buildMetadata().buildSessionFactory();
    } catch (Exception ex) {
        StandardServiceRegistryBuilder.destroy(registry);
        throw new RuntimeException(ex);
    }
}

我与PDB1对应的休眠配置文件如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>

    <property name="connection.url">jdbc:oracle:thin:@//localhost:1521/pdb1.oradev.oraclecorp.com</property>
    <property name="connection.username">test</property>
    <property name="connection.password">password12</property>
    <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
    <property name="dialect">org.hibernate.dialect.Oracle12cDialect</property>

    <property name="show_sql">true</property>

    <property name="format_sql">true</property>
    <property name="hbm2ddl.auto">create</property>

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>
    <property name="current_session_context_class">thread</property>

    <mapping class="net.codejava.hibernate.Book" />

  </session-factory>
</hibernate-configuration>

这种方法的问题是每个PDB都有一个配置文件。 如何动态选择要使用Hibernate连接的PDB?

这取决于您的策略,切换数据库的触发因素是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM