我想用不同的数据库连接多个数据库,如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();
}
}
答案 0 :(得分: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的多个模式:
how to use Hibernate for two different schemas in a single database
看看这里:这是一个非常好的网站,有大量的hibernate教程: