(一)DBCP:
DBCP是Apache提供的一款开源免费的数据库连接池!
Hibernate3.0之后不再对DBCP提供支持!因为Hibernate声明DBCP有致命的缺欠!DBCP因为Hibernate的这一毁谤很是生气,并且说自己没有缺欠。
1、导入jar包
mysql-connector-java-5.1.28-bin.jar
commons-dbcp-1.4.jar
commons-pool-1.3.jar
2、代码
import org.apache.commons.dbcp.BasicDataSource;
import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
public class Demo1 {
public void fun1() throws SQLException {
/*
* 1. 创建连接池对象
* 2. 配置四大参数
* 3. 配置池参数
* 4. 得到连接对象
*/
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/stdudent");
dataSource.setUsername("root");
dataSource.setPassword("123");
ds.setMaxActive(20);//最大连接数
ds.setMaxIdle(10);//最大空闲连接数
ds.setInitialSize(10);//初始化连接数
ds.setMinIdle(2);//最小空闲连接数
ds.setMaxWait(1000);//最大等待毫秒
Connection con = dataSource.getConnection();
System.out.println(con.getClass().getName());
/**
* 连接池内部使用四大参数创建了连接对象!即mysql驱动提供的Connection
* 连接池使用mysql的连接对象进行了装饰,只对close()方法进行了增强!
* 装饰之后的Connection的close()方法,用来把当前连接归还给池!
*/
con.close();//把连接归还给池!
}
}
(二)C3P0: C3P0也是开源免费的连接池!C3P0被很多人看好!
现在连接数据库用户c3p0,不用dbcp
1、导jar包
mysql-connector-java-5.1.28-bin.jar
c3p0-0.9.2-pre1.jar
mchange-commons-0.2.jar
2、写代码
(1)无配置文件
public void fun1() throws PropertyVetoException, SQLException {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306");
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setUser("root");
ds.setPassword("123");
ds.setAcquireIncrement(5);// 每次的增量为5
ds.setInitialPoolSize(20);// [初始化连接数
ds.setMinPoolSize(2);// [最少连接数
ds.setMaxPoolSize(50);// [最多连接数
Connection con = ds.getConnection();
System.out.println(con);
con.close();
}
(2)配置文件
配置文件名称必须为:c3p0-config.xml
配置文件必须放在src下面
c3p0也可以指定配置文件,而且配置文件可以是properties,也可骒xml的。当然xml的高级一些了。但是c3p0的配置文件名必须为c3p0-config.xml,并且必须放在类路径下。
|
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">123</property> <property name="acquireIncrement">3</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">2</property> <property name="maxPoolSize">10</property> </default-config> <named-config name="oracle-config"> <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">123</property> <property name="acquireIncrement">3</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">2</property> <property name="maxPoolSize">10</property> </named-config> </c3p0-config> |
c3p0的配置文件中可以配置多个连接信息,可以给每个配置起个名字,这样可以方便的通过配置名称来切换配置信息。上面文件中默认配置为mysql的配置,名为oracle-config的配置也是mysql的配置。
|
public void fun2() throws PropertyVetoException, SQLException { ComboPooledDataSource ds = new ComboPooledDataSource(); Connection con = ds.getConnection(); System.out.println(con); con.close(); } |
|
public void fun2() throws PropertyVetoException, SQLException { ComboPooledDataSource ds = new ComboPooledDataSource("orcale-config"); Connection con = ds.getConnection(); System.out.println(con); con.close(); } |
完善JDBCUtil.java
// 配置文件的默认配置!要求你必须给出c3p0-config.xml!!!
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
/**
* 使用连接池返回一个连接对象
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
浙公网安备 33010602011771号