连接池以及连接池归还的方法
作用:提高操作性能
DataSource接口:用于创建连接池
自己创建连接池步骤:
导入jar包
引入jdbc工具类
1.准备容器,用于保存连接对象
调用工具类中的方法创建连接对象
private static List<Connection> pool=Collections.synchronizedList(new ArrayList<>());
2.定义静态代码块,通过工具类获取连接对象
static{
for(int i=1;i<10;i++){
Connection con=JDBCUtils.getConnrction()
pool.add(con)
}
}
3.重写getConnection方法
在方法中调用连接对象之前需要先判定连接池中是否存在连接对象
public Connection getConnection() throws SqlException{
if(pool.size()>0){
Connection co=pool.remove(0)
return co
}else{
throw new RuntimeExcepion("连接数已用尽")
}
}
4.定义getSize方法,获取连接池容器大小
public int getSize(){
return pool.size();
}
调用连接池对象:
创建连接池对象
通过连接池对象获取连接对象
查询信息
执行sql语句,接收结果集
处理结果集
释放资源
装饰模式归还连接(比较繁琐):
1.定义一个类,实现Connection接口
2.定义连接对象和连接池容器对象
3.通过有参构造方法为成员变量赋值
4.重写close方法,完成归还连接
5.剩余方法还是调用原有的连接对象即可
适配器设计模式:创建一个适配器类(创建层抽象类),实现除目标方法以外的所有方法,在自定义类中继承这个适配器类,重写目标方法即可。注意:这里的连接对象需要通过super传递给父类也就是适配器类。
动态代理的方式归还连接:
通过Proxy来完成对Connection实现类的对象的代理,代理过程中判断是否实现的close方法,进行连接对象的归还
C3P0连接池的使用
导入jar包
导入配置文件必须在src目录下
创建C3P0连接池对象
获取数据连接进行使用
注意:C3P0的配置文件会自动加载,但必须交c3p0-config.xml或者c3p0-config.properties
继承的方式是无法实现连接池的归还的

浙公网安备 33010602011771号