连接池:连接复用,避免了数据库连接频繁建立、关闭的开销。通过以及一套连接使用、分配、治理策略,使得该连接池中的连接可以得到高效、安全的复用。
1.c3p0:
(1)C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
(2)<!-- C3P0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}"></property><!-- 数据库驱动 -->
<property name="jdbcUrl" value="${jdbc.url}"></property><!-- 数据库链接地址 -->
<property name="user" value="${jdbc.user}"></property><!-- 数据库账号 -->
<property name="password" value="${jdbc.password}"></property><!-- 数据库密码 -->
<property name="maxPoolSize" value="25"></property><!-- 连接池中保留的最大连接数 -->
<property name="minPoolSize" value="5"></property><!-- 连接池中保留的最小连接数 -->
<property name="initialPoolSize" value="5"></property><!-- 连接池中初始化连接数量 -->
<property name="maxIdleTime" value="3600"></property><!--最大空闲时间,3600秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="idleConnectionTestPeriod" value="300"></property><!--每300秒检查所有连接池中的空闲连接。Default: 0 -->
</bean>
2.dbcp:
(1)DBCP(DataBase Connection Pool)数据库连接池,是java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar.
(2)<bean id ="dataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}"></property><!-- 数据库驱动 -->
<property name="jdbcUrl" value="${jdbc.url}"></property><!-- 数据库链接地址 -->
<property name="user" value="${jdbc.user}"></property><!-- 数据库账号 -->
<property name="password" value="${jdbc.password}"></property><!-- 数据库密码 -->
<property name="maxActive" value="30"/><!--maxActive: 最大连接数量-->
<property name="maxIdle" value="7"/><!--maxIdle: 最大空闲连接-->
<property name="maxWait" value="2000" /><!--maxWait: 超时等待时间以毫秒为单位 -->
<property name="initialSize" value="5" /><!--initialSize: 初始化连接-->
<property name="testWhileIdle" value="true" /><!--指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.-->
<property name="validationQuery" value="SELECT 1 " /><!--SQL查询,用来验证从连接池取出的连接-->
</bean>
总结:
dbcp没有自动回收空闲连接的功能
c3p0有自动回收空闲连接功能
所以我们在使用spring框架开发项目比较常用c3p0