什么是连接池

没有连接池的情况

每次CRUD操作都要使用数据库的时候,都要创建一个数据库连接对象

普通的JDBC数据库连接使用 DriverManager 来获取

每次向数据库建立连接的时候都要将 Connection 加载到内存中

然后再验证用户名和密码花费时间0.05s~1s左右

每次CRUD操作就向数据库要要一个连接,执行完成后再断开连接。
这样的方式将会消耗大量的资源和时间。

	数据库的连接资源并没有得到很好的重复利用
	若同时有几百人甚至几千人在线,
	频繁的进行数据库连接操作将占用很多的系统资源,
    严重的甚至会造成服务器的崩溃。
	
数据库连接池

保存对象的容器

连接池

保存数据库连接对象的容器

作用

初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,
用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。
池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能。
数据库连接池
数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。
预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,
只需从“缓冲池”中取出一个,使用完毕之后再放回去。
我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接
可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。
示意图

撩课-JavaWeb之什么是连接池与连接池使用

连接对象是以链表形式存放,已释放的连接,放到最后。
从最前面获取连接对象
连接池中的属性
合理的设置连接池的属性,会提高连接池的性能

1.连接数据库时需要的4个要素

驱动名称,数据库地址,用户名,密码
2.初始化连接数

初始化时,连接池当中创建多少个Connection对象
3.最大连接数

连接池当中最多存储多少个Connection对象
4.最小连接数

连接池当中最少得存多个少Connection对象
5.最大的空闲时间

如果一个获取了连接对象,在指定时间内没有任何动作,就会自动释放链接
6.最大等待时间

在指定时间内,尝试获取连接,如果超出了指定时间,就会提示获取失败

连接池使用

连接池是使用javax.sql.DataSource接口来表示连接池
DataSource和jdbc一样,也是只提供一个接口,由第三方组织来提供
常见连接池
DBCP
	Spring推荐,Tomcat的数据源使用的就是DBCP
C3P0
	C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布
    从2007年就没有更新了,性能比较差。
Druid
    阿里巴巴提供的连接池-德鲁伊-号称最好的连接池,它里面除了这些, 还有更多的功能。
DataSource数据源和连接池Connection Pool是同一个东西,只是叫法不一样而已
使用连接池与不使用连接池区别
 1.获取方式不同
	 传统:Connection conn = DriverManager.getConnection(url.userName,pwd);
	 连接池:Conneciton conn = DataSource对象.getConnection();
 2.释放资源不同
	 传统:和数据库断开conn.close();
	 连接池:把数据库连接对象还给连接池,还可以给下一个人来使用
连接池操作
 主要是学习如何创建DataSource对象,再从DataSource对象中获取Connection对象
 这些都是第三方提供者给我们提供好的。直接使用就行。
 获取连接对象之后,其余的操作和以前是一样的。
 不同的数据库连接池,就是在创建DataSource上不一样。

相关文章: