DBCP使用的比较少, 大多用 c3p0
c3p0与dbcp区别
dbcp没有自动回收空闲连接的功能
c3p0有自动回收空闲连接功能
基础使用, DBCP是用连接池实现的
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
basicDataSource.setUrl("jdbc:mysql://127.0.0.1/mydb");
basicDataSource.setUsername("root");
basicDataSource.setPassword("root");
basicDataSource.setMaxActive(3);
try {
Connection connection1 = basicDataSource.getConnection();
Connection connection2 = basicDataSource.getConnection();
Connection connection3 = basicDataSource.getConnection();
System.out.println(connection1.hashCode());
System.out.println(connection2.hashCode());
System.out.println(connection3.hashCode());
connection3.close();
Connection connection4 = basicDataSource.getConnection();
System.out.println(connection4.hashCode()); // 输出同3
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
可以使用属性文件创建datasource
public void testProperties() {
Properties properties = new Properties();
try {
properties.load(DBCPTest.class
.getResourceAsStream("jdbc.properties"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
BasicDataSource basicDataSource = (BasicDataSource) BasicDataSourceFactory
.createDataSource(properties);
System.out.println(basicDataSource.getConnection());
//输出 : jdbc:mysql://127.0.0.1:3306/mysql, UserName=root@localhost, MySQL-AB JDBC Driver
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
属性对应设置方法, 源代码中对应
private final static String PROP_DEFAULTAUTOCOMMIT = "defaultAutoCommit";
private final static String PROP_DEFAULTREADONLY = "defaultReadOnly";
private final static String PROP_DEFAULTTRANSACTIONISOLATION = "defaultTransactionIsolation";
private final static String PROP_DEFAULTCATALOG = "defaultCatalog";
private final static String PROP_DRIVERCLASSNAME = "driverClassName";
private final static String PROP_MAXACTIVE = "maxActive";
private final static String PROP_MAXIDLE = "maxIdle";
private final static String PROP_MINIDLE = "minIdle";
private final static String PROP_INITIALSIZE = "initialSize";
private final static String PROP_MAXWAIT = "maxWait";
private final static String PROP_TESTONBORROW = "testOnBorrow";
private final static String PROP_TESTONRETURN = "testOnReturn";
private final static String PROP_TIMEBETWEENEVICTIONRUNSMILLIS = "timeBetweenEvictionRunsMillis";
private final static String PROP_NUMTESTSPEREVICTIONRUN = "numTestsPerEvictionRun";
private final static String PROP_MINEVICTABLEIDLETIMEMILLIS = "minEvictableIdleTimeMillis";
private final static String PROP_TESTWHILEIDLE = "testWhileIdle";
private final static String PROP_PASSWORD = "password";
private final static String PROP_URL = "url";
private final static String PROP_USERNAME = "username";
private final static String PROP_VALIDATIONQUERY = "validationQuery";
private final static String PROP_VALIDATIONQUERY_TIMEOUT = "validationQueryTimeout";