为什么用连接池
-我们最初jdbc连接数据库需要
1. 安装驱动
2. 取得连接
3. 打开窗口
4. 书写语句、执行语句和查看结果
5. 关闭到数据库的连接
其中1,2和5完全可以重用,这样就加快了执行。也即:
同一个连接可以打开多个窗口
同一个窗口可以多次执行语句
我们发现jdbc连接数据库时对于同一个项目来说,如果每次操作数据库的话,每一次查询添加…,使用上面的方法就是要建立多次数据库连接,而每一次获得连接对于Java代码来说都是重复动作,不仅占用了空间,而且在执行效率上也产生了浪费
解决连接重用的方案分析
我们想象火车站售票大厅的情况,平时客流比较少时,我们只开几个售票窗口,不管有没有顾客来买票:多时间处于空闲状态。在如节假日等高峰期,所有售票窗口都会启用。特别地,在春运这样的最高峰期,可能会有临时窗口。但临时窗口也不是无限制地多开,开窗口要耗费物力人力。这样在高峰期只能让客户等待长一点的时间。春运最高峰时排队,这个时间客户就需要等待。
我们在重用数据库连接时也可以采用类似的方案。我们先打开一批连接等待客户使用(如同非高峰期我们开几个窗口) ,不管用没有客户使用。在高峰期到来时,我们可以多开几个连接让浏览器客户使用。如同春运一样不可能为了让每个人都有一个窗口服务,我们的数据库连接也不能无限开启(数据库连接要占用内存等资源,同时每个数据库能支持的并发连接数也不是无限的).在不能为需要的数据的客户立马服务时,只能让客户排队等待。如果用户一直无法得到一个连接对象时,就不要让用户无限期等待。
从上面可以看出,我们重用连接的方案,需要提供以下信息:
预先开启的连接数
能开启的最大连接数
一个连接要被多个客户使用,因而连接用完不能关闭
一个超时时间,如果超过这个时间,用户就无法获取连接而得到数据。
在JDBC连接数据库的连接重用方案里,我们称为连接池。
连接池中可以重用的包括Connection对象和Statement对象
连接池的作用及原理
1. 预先开启的连接数
2. 能开启的最大连接数
3. 一个连接要被多个客户使用,因而连接用完不能关闭
4. 一个超时时间,如果超过这个时间,用户就无法获取连接而得到数据。