我想连接多个数据库,如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(); } }
Diversity.. 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用于两个不同的模式
看看这里:这是一个非常好的网站,有大量的hibernate教程:
http://www.javabeat.net/hibernate/page/4/
您需要为每个数据库提供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用于两个不同的模式
看看这里:这是一个非常好的网站,有大量的hibernate教程:
http://www.javabeat.net/hibernate/page/4/