谈谈我自己对数据库连接池的通俗理解:
数据库连接池,顾名思义里面存放的是数据库的一堆连接。数据库连接池的存在就是省去创建数据库连接这一步(数据库连接是一种比较昂贵的资源,创建数据库连接会占用较多资源的),现在是一开始就创建n个数据库的连接,然后在进行后面的操作(查询修改等)的时候就不用创建数据库连接了,直接进行查询修改操作,操作结束也不用关闭连接,连接会被重新放回数据库连接池中,以备下次使用。
一般有一个最小值有一个最大值,最小值(mincon)说的是最少会有mincon这么多的数据库正在连接,如果设置的mincon值大于实际需要使用的数据库连接,那么多出来的部分连接依然保持连接,但是处于空闲状态,不过依然占用资源;所以最小值的设置是比较重要也是不好选择的,mincon设置太大却使用不了,就会占用较多资源,且启动时候加载数据库连接池时候也会占用较长时间也会造成不便;如果mincon设置过小,那么数据库连接池就的存在意义就比较小了(极限情况想一下mincon设置为1)。最大值说的是最多可以使用的连接数目。数据库连接的管理能显著影响到整个应用程序的性能,设置合适值的话性能会显著提升。数据库连接池正是针对这个问题提出来的。
连接池的基本思想是在系统初始化的时候,将数据库连接作为对象存储在数据库连接池中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。
常见的数据库连接池有:
c3p0:
是一个库,它扩展了传统的jdbc数据库连接池,它实现了数据源和JNDI(Java Naming and Directory Interface,是sun公司(现被甲骨文Oracal公司收购)提供的java命名系统接口)绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate(开源的对象关系映射框架,教程可以参考:https://www.w3cschool.cn/hibernate/),Spring(一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题)等。
使用:1. 导入相关jar包
2. 在项目src目录下新建一个名叫 c3p0-config.xml,并配置连接池的相关信息
3. 在代码中使用ComboPooledDataSource对象的getConnection()方法获取数据库连接对象
下载地址:http://sourceforge.net/projects/c3p0/
相关属性说明: http://www.mchange.com/projects/c3p0/
DBCP:
下载地址:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
Druid:
下载地址:http://druid.io/