动态创建多个连接池

时间:2016-10-13 13:48:08

标签: java jdbc connection-pooling c3p0 apache-commons-dbcp

我通过JDBC连接多个数据源,即Hive,Oracle,Netezza等,并执行一些DDL和DML查询。

我尝试了多种连接池工具。我从HikariCP1 开始(因为它仍处于活动状态),但在hive (需要hive 2.0.0 jar)时遇到了一些问题。

所以,我尝试c3p0commons-dbcp,两者都有效。

C3P0:

private static Connection getJdbcConnection(String connectionUri, String username,
        String password) throws SQLException {

    ComboPooledDataSource cpds = new ComboPooledDataSource();
    cpds.setJdbcUrl(connectionUri);
    cpds.setUser(username);
    cpds.setPassword(password);
    return cpds.getConnection(); 
}

DBCP:

private static Connection getJdbcConnection(String connectionUri, String username,
        String password) throws SQLException {

    BasicDataSource bds = new BasicDataSource();
    bds.setUrl(connectionUri);
    bds.setUsername(username);
    bds.setPassword(password);  
    return bds.getConnection(); 
}

现在我需要支持多个数据源。我想为每个数据源创建一个单独的池(对于hive和oracle分开)

我无法事先创建游戏池,因为我没有关于连接uri和凭据的任何先前信息。

如何使用c3p0或dbcp实现此目的?

0 个答案:

没有答案