Spring下配置几种常用连接池.pdf
文本预览下载声明
Spring下配置几种常用连接池
连接池概述
数据库连接是一种关键的有限的昂贵的资源 ,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能
显著影响到整个应用程序的伸缩性和健壮性 ,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接 ,它允许应用程序重复使用一个现有的数据库连接 ,而再不是重新建立一
个 ;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能
明显提高对数据库操作的性能。
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中 ,这些数据库连接的数量是由最小数据库连接数来设
定的。无论这些数据库连接是否被使用 ,连接池都将一直保证至少拥有这么多的连接数量。
连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数 ,当应用程序向连接池请求的连接数超过最大连接数
量时 ,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素 :
1. 最小连接数是连接池一直保持的数据库连接 ,所以如果应用程序对数据库连接的使用量不大 ,将会有大量的数据库
连接资源被浪费 ;
2. 最大连接数是连接池能申请的最大连接数 ,如果数据库连接请求超过此数 ,后面的数据库连接请求将被加入到等待
队列中 ,这会影响之后的数据库操作。
3. 如果最小连接数与最大连接数相差太大 ,那么最先的连接请求将会获利 ,之后超过最小连接数量的连接请求等价于
建立一个新的数据库连接。不过 ,这些大于最小连接数的数据库连接在使用完不会马上被释放 ,它将被放到连接池
中等待重复使用或是空闲超时后被释放。
目前常用的连接池有 :
C3P0比较耗费资源 ,效率方面可能要低一点。
DBCP在实践中存在BUG ,在某些种情会产生很多空连接不能释放 ,Hibernate3.0已经放弃了对其的支持。
Proxool的负面评价较少 ,现在比较推荐它 ,而且它还提供即时监控连接池状态的功能 ,便于发现连接泄漏的情况。
Tomcat JDBC‐POOL速度较快 ,并且支持的功能较多 h p:///project/tomcat/tomcat‐jdbc‐pool.html
阿里巴巴框架 的druid连接池
HikariCP
不管通过何种持久化技术 ,都必须通过数据连接访问数据库 ,在Spring中 ,数据连接是通过数据源获得的。在以往的应用
中 ,数据源一般是Web应用服务器提供的。在Spring中 ,你不但可以通过JNDI获取应用服务器的数据源 ,也可以直接在
Spring容器中配置数据源 ,此外 ,你还可以通过代码的方式创建一个数据源 ,以便进行无依赖的单元测试。
DBCP数据源
DBCP类包为commons‐dbcp.jar ,DBCP是一个依赖 Jakarta commons‐pool对象池机制的数据库连接池 ,所以还应包含
commons‐pool.jar。
bean配置片段 :
bean id=dataSource class=mons.dbcp.BasicDataSource
destroy‐method=close
property name=driverClassName value=com.mysql.jdbc.Driver /
property name=url value=jdbc:mysql://localhost:3306/sampledb /
property name=username value=root /
property name=password value=1234 /
/bean
常用属性 :
方法 说明
close BasicDataSource提供了close()方法关闭数据源 ,所以必须设定destroy‐method=”close”属性 ,
以便Spring容器关闭时 ,数据源能够正常关闭。
defaultAutoCommit 设置从数据源中返回的连接是否采用自动提交机制 ,默认值为 true ;
defaultReadOnly 设置数据源是否仅能执行只读操作 , 默认值为 false ;
显示全部