c3p0多数据源配置

为了sql的执行效率,也许很多人都会放弃使用hibernate,从而选择c3p0。最近项目中就遇到这种情况,而且还得用到多数据源,找了很多资料,最终也没找到,最后通过实践,终于理顺。为了大家跟我一样也走弯路,故将我的实现方式分享在这里。

 首先,我选择通过c3p0-config.xml配置的方式来实现多数据源的配置,对多数据配置主要注意default-config和named-config之间的区别,刚开始看到default还以为,我name里面没定义的配置会从default中继承,其实不然,default-config和named-config是完全独立的两套数据源配置。他们之间的唯一关系便是new ComboPooledDataSource(dbSource)时,找不到name为dbSource的named-config的数据源配置时,就会自动的去尝试链接default-config的数据源配置。

数据源中的具体配置,和各property的含义各处都比较好找,这里就不在赘述。

  DBConnection类    

 public DBConnection(String dbSource){
        ds = new ComboPooledDataSource(dbSource);
    }


    public final synchronized Connection getConnection() throws SQLException {
        try {             
            Connection con = ds.getConnection();

           //设置连接的DatabaseMetaData对象信息
            setMetaData(con);
            return con;                                         
        } catch (SQLException e) {                                                
            e.printStackTrace();
        }                                                                         
        return null;
    }


DBConnectionManager类

      private static Map dbConnection = new HashMap();

     private static DBConnection getDBConnection(String dbSource){
        DBConnection dbConn = dbConnection.get(dbSource);
        if(dbConn==null){
            dbConn = new DBConnection(dbSource);
            dbConnection.put(dbSource, dbConn);
        }
        return dbConn;
    }

你可能感兴趣的:(java)