在spring中,常用的连接池有:jdbc,dbcp,c3p0,JNDI4种,他们有不同的优缺点和适用场景。其中,spring框架推荐使用dbcp,hibernate框架推荐使用c3p0。经测试发现,c3p0与dbcp相比较,c3p0能够更好的支持高并发,但是在稳定性方面略逊于dpcp。
1.jdbc连接池(spring-jdbc-4.0.6.RELEASE.jar)
<!-- jdbc连接池 -->
<bean
id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/ibatis" />
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
2.dbcp连接池配置示例(commons-dbcp.jar)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!--设置为close使Spring容器关闭同时数据源能够正常关闭,以免造成连接泄露 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ibatis" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="defaultReadOnly" value="false" />
<!-- 设置为只读状态,配置读写分离时,读库可以设置为true -->
<!-- 在连接池创建后,会初始化并维护一定数量的数据库安连接,当请求过多时,数据库会动态增加连接数, 当请求过少时,连接池会减少连接数至一个最小空闲值 -->
<property name="initialSize" value="5" />
<!-- 在启动连接池初始创建的数据库连接,默认为0 -->
<property name="maxActive" value="15" />
<!-- 设置数据库同一时间的最大活跃连接默认为8,负数表示不闲置 -->
<property name="maxIdle" value="10"/>
<!-- 在连接池空闲时的最大连接数,超过的会被释放,默认为8,负数表示不闲置 -->
<property name="minIdle" value="2" />
<!-- 空闲时的最小连接数,低于这个数量会创建新连接,默认为0 -->
<property name="maxWait" value="10000" />
<!-- 连接被用完时等待归还的最大等待时间,单位毫秒,超出时间抛异常,默认为无限等待 --> </bean>
3.c3p0连接池配置示例(c3p0-0.9.1.2.jar)
<!-- c3p0连接池 -->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ibatis" />
<property name="user" value="root" />
<property name="password" value="root" />
</bean>