C3P0连接池

本文记录Java学习过程中遇到的C3P0连接池~

C3P0是一个开源免费的连接池。目前使用它的开源项目有:Spring和Hibernate等。使用第三方工具需要导入jar包,C3P0使用时还需要添加配置文件c3p0-config.xml。

导入jar包

这里使用0.9.2版本,需要导入jar包。

c3p0-0.9.1.2.jar

配置文件

<c3p0-config>
	<!-- 默认配置 -->
	<default-config>
		<!-- 连接数据库的4项基本参数 -->
		<property name="dirverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test</property>
		<property name="user">root</property>
		<property name="password">123456</property>
		<!-- 如果池中数据连接不够时一次增长的个数 -->
		<property name="acquireincrement">5</property>
		<!-- 初始连接数 -->
		<property name="initialPoolSize">20</property>
		<!-- 最小连接数 -->
		<property name="minPoolSize">10</property>
		<!-- 最大连接数 -->
		<property name="maxPoolSize">40</property>
		<!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量 -->
		<property name="maxStatements">0</property>
		<!-- 连接池内单个连接所拥有的最大缓存statements数 -->
		<property name="maxStatementsPerConnection">5</property>
	</default-config>
	<!-- 配置的命名 -->
	<named-config name="oliver">
		<!-- 连接数据库的4项基本参数 -->
		<property name="dirverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test</property>
		<property name="user">root</property>
		<property name="password">123456</property>
		<!-- 如果池中数据连接不够时一次增长的个数 -->
		<property name="acquireincrement">5</property>
		<!-- 初始连接数 -->
		<property name="initialPoolSize">20</property>
		<!-- 最小连接数 -->
		<property name="minPoolSize">10</property>
		<!-- 最大连接数 -->
		<property name="maxPoolSize">40</property>
		<!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量 -->
		<property name="maxStatements">0</property>
		<!-- 连接池内单个连接所拥有的最大缓存statements数 -->
		<property name="maxStatementsPerConnection">5</property>
	</named-config>
</c3p0-config>

常见配置项

编写工具类

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Utils {
	private static ComboPooledDataSource dataSource = new ComboPooledDataSource("itheima");

	public static DataSource getDataSource() {
		return dataSource;
	}

	public static Connection getConnection() {
		try {
			return dataSource.getConnection();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

标签: none