如何配置hibernate配置文件以从同一个数据库中拥有多个实例?

时间:2016-04-26 11:12:11

标签: java database hibernate

我在db2上有多个实例。如何配置hibernate配置文件以便我可以使用所有这些文件?

2 个答案:

答案 0 :(得分:0)

您可以在为实体定义表时按架构元素指定它。

@Table(name="TABLE_NAME", schema="SCHEMA_NAME")

否则,您可以使用单独的EntityManager指向相应的架构&然后使用相同的实体,因为它们的结构相似。

每个架构都可以有单独的配置文件。然后从中构建SessionFactory,下面是一些伪代码。

SessionFactory sf_1 = new  Configuration().configure("schema1config.cfg.xml").buildSessionFactory();
SessionFactory sf_2 = new Configuration().configure("schema2config.cfg.xml").buildSessionFactory();

session_1 = sf_1.openSession();  //-- Similarly for other

您可以参考this link了解更多详细信息以映射多个架构,但它不是特定于休眠的。

归功于@ Nayan Wadekar

资源链接:

How to connect to multiple databases in Hibernate

答案 1 :(得分:0)

根据我的要求在链接上找到解决方案:

Setting properties programmatically in Hibernate

public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
    try {
        // Create the SessionFactory from standard (hibernate.cfg.xml) 
        // config file.


        Properties c = new Properties();
        c.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        c.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
        c.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/mydiscou_billing?zeroDateTimeBehavior=convertToNull");
        c.setProperty("hibernate.connection.username", "root");
        c.setProperty("hibernate.connection.password", "123");
        c.setProperty("hibernate.connection.autoReconnect", "true");

        c.setProperty("connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider");
        c.setProperty("c3p0.min_size", "5");
        c.setProperty("c3p0.max_size", "20");
        c.setProperty("c3p0.timeout", "1800");
        c.setProperty("c3p0.max_statements", "100");
        c.setProperty("hibernate.c3p0.testConnectionOnCheckout", "true");




        sessionFactory = new AnnotationConfiguration().setProperties(c).configure().buildSessionFactory();
    } catch (Throwable ex) {
        // Log the exception. 
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionFactory() {
    return sessionFactory;
}

}