请问各位大神,java如何实现同时支持多种数据库啊?

项目经理要我做一个提醒工具,要从多个数据库的指定表中读数据出来,再提醒给用户。可是这多个数据库是不同的,有的是DB2,有的是MySQL,还有一个Oracle。怎么做啊,请大神给我指条明道,提示一下。我现在的程序只能支持一个数据库,连接池用C3P0,然后数据源等都写在配置文件的。可是要同时支持多种数据库,就不知怎么做了啊?
最好详细些啊。。。谢谢。分数可以追加!

Java连数据库不管用不用框架底层都是JDBC,而JDBC对每种类型数据库需要重新配置驱动,多个数据库同时用就没法单独使用连接池了,每个数据库都要打开自己的连接池的。你可以考虑自己写一个适配器层接口和实现,实现里面写连接多种数据库的逻辑,在里面调用原生JDBC代码或Hibernate, MyBatis那些框架都可以,这样上面那些层都不用改变了。

就像下面这个(示例,只写了查,用Hibernate,其他类似):
public interface MultiTypeDBSupport {
public List getData();
// ...
}
public class MultiTypeDBSupportImpl implements MultiTypeDBSupport {
public SessionFactory getSessionFactory(Stirng configFile){
SessionFactory sessionFactory = Configuration().config(configFile).buildSessionFactory();
}
public List getData(){
SessionFactory sessionFactoryMySQL = getSessionFactory("hibernateMySQL.cfg.xml");
Session sessionMySQL = sessionFactoryMySQL.openSession();
List users1 = sessionMySQL.createQuery("from User");

SessionFactory sessionFactoryOracle = getSessionFactory("hibernateOracle.cfg.xml");
Session sessionOracle = sessionFactoryOracle.openSession();
List users2 = sessionOracle.createQuery("from User");

users1.addAll(users2);
return users1;
}
// .......
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-01
那就是使用多个数据源
这个没有办法,每一个数据库,用的是不同的驱连不同的URL,
要想连那个数据库,用那个数据源。
第2个回答  2012-06-01
JDBC为每个数据库都提供了支持,只要你将相对应的jar包放到项目中,分别根据不同的数据库连接字符串,创建不同的间接即可,不懂的可以企~鹅~我~418896376~本回答被提问者采纳
相似回答