数据库连接池 池参数(所有池参数都有默认值): 初始大小:10 最小空闲连接数:3 增量:一次创建的最小单位(5个) 最大空闲连接数:12个 最大连接数:20个 最大的等待时间:1000毫秒 四大连接参数: 连接池也是使用4大连接参数来完成连接的创建连接对象 实现的接口: 连接池必须实现:javax.sql.DataSource接口 连接池返回的Connection对象,它的close方法与众不同,调用它的close不是关闭而是将连接归还给池
需要jar:
package cn.itcast.jdbc; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.dbcp.BasicDataSource; import org.junit.Test; /** * DBCP连接池 * @author Administrator * */ /* 接口 DataSource DataSource 接口由驱动程序供应商实现。共有三种类型的实现: 基本实现 - 生成标准的 Connection 对象 连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。 分布式事务实现 - 生成一个 Connection 对象,该对象可用于分布式事务,大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用,大多数情况下总是与连接池管理器一起使用。 Connection getConnection() 尝试建立与此 DataSource 对象所表示的数据源的连接。 Connection getConnection(String username, String password) 尝试建立与此 DataSource 对象所表示的数据源的连接。 */ public class Demo1 { @Test public void fun1() throws SQLException{ /* * 1、创建连接池对象 * 2、配置4大参数 * 3、配置池参数 * 4、得到连接对象 */ BasicDataSource dataSource=new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/demo"); dataSource.setUsername("guodaxia"); dataSource.setPassword("961012gz"); dataSource.setMaxActive(20); dataSource.setMinIdle(3); dataSource.setMaxWait(1000); Connection con=dataSource.getConnection(); Connection con1=new MyConnection(con); System.out.println(con1.getClass().getName()); //org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper 装饰者模式 /** * 连接池内部使用四大参数创建了连接对象,即mysql驱动提供的Connection * 连接池使用mysql的连接对象进行了装饰,只对close方法进行了增强 * 装饰之后的Connection的close方法用来把当前连接归还给池 */ con1.close();//把连接归还给池 } }