4

我想将 SQL 和 Oracle 等多个数据库与不同的数据库连接起来。所以我已经有 MSSQL hibernate.cfg.xml 和用于会话工厂的 Hibernateutil 类。现在我正在尝试将 oracle 与不同的表连接起来。

请告知我可以使用相同的 cgf.xml 并且 util 类也可以配置 oracle 数据库。

这是 util 类。

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();

    @SuppressWarnings("deprecation")
    private static SessionFactory buildSessionFactory()
    {
        try
        {

            SessionFactory sessionFactory = new Configuration().configure("/DAO/hibernate.cfg.xml").buildSessionFactory();
            return sessionFactory;        
        }
        catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }

}
4

1 回答 1

5

您需要为每个数据库提供一个 cfg.xml。

 Oracle.cfg.xml
 mssql.cfg.xml

在那里您提供适当的数据库连接配置、要使用的方言以及需要哪些hbm实体类的映射文件

在您的代码中,您为每个数据库创建一个 SessionFactory。

SessionFactory oracleSF = Configuration.configure("oracle.cfg.xml").buildSessionFfactory();
SessionFactory msSF = Conf..configure("mssql.cfg.xml").build....

要重用您的 util 类,您只需将配置文件的名称传递给创建 SessionFactory 作为附加参数的方法。

不同表的实体类在适当的配置文件中声明,因此分配给正确的数据库,因此 hibernate 知道要使用哪个数据库。

另请查看有关具有单个 cfg 的多个模式的讨论:

如何在单个数据库中将 Hibernate 用于两个不同的模式

看看这里:这是一个非常不错的网站,有大量的休眠教程:

http://www.javabeat.net/hibernate/page/4/

于 2013-12-28T22:31:18.647 回答