数据库连接池--C3P0实现

1.C3P0 简介

  C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

  C3P0的数据库连接池的核心类是ComboPooledDataSource

  使用C3P0需要在工程中导入的jar包

    c3p0-0.9.2-pre5\lib下有三个jar包,如果使用MySQL数据库,只需导入c3p0-0.9.2-pre5.jar,mchange-commons-java-0.2.3两个包即可,另外一个c3p0-oracle-thin-extras-0.9.2-pre5.jar供Oracle数据库使用.

2.代码实现

  方式一,与DBCP代码实现类似,使用ComboPooledDataSource自身的API实现对数据库连接池的属性进行配置.

import java.sql.*;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3P0Utils {
	//1 准备一个连接池
	private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
	static{
		//设置参数
		try {
			//1.1 数据库连接基本4项
			dataSource.setDriverClass("com.mysql.jdbc.Driver");
			dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/day17");
			dataSource.setUser("root");
			dataSource.setPassword("fujianyi");
			//1.2 连接池的特性
			// * 初始化个数
			dataSource.setInitialPoolSize(10);
			// * 最大数
			dataSource.setMaxPoolSize(20);
			// * 最小数
			dataSource.setMinPoolSize(5);
			// * 每次增加量
			dataSource.setAcquireIncrement(3);
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	public static Connection getConnection() throws SQLException{
		return dataSource.getConnection();
	}
}

  方式二,使用C3P0的配置文件c3p0-config.xml,对数据库连接池进行设置,在创建ComboPooledDataSource对象时,将配置文件中<named-config name="XXX">name属性的值作为字符串参数传入,即可完成配置文件的自动加载,配置文件同样需要放在classpath路径下,即src路径.

import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Utils2 {
	private static ComboPooledDataSource dataSource;
	static{
		dataSource = new ComboPooledDataSource("XXX");
	}
	public static Connection getConnection() throws SQLException{
		return dataSource.getConnection();
	}
}

  关于配置文件

    首先配置文件的名必须为c3p0-config.xml,且必须放在classpath路径下,其格式及内容如下,

<c3p0-config>
	<!-- 默认配置,如果没有指定则使用这个配置 -->
	<default-config>
		<property name="checkoutTimeout">30000</property>
		<property name="idleConnectionTestPeriod">30</property>
		<property name="initialPoolSize">10</property>
		<property name="maxIdleTime">30</property>
		<property name="maxPoolSize">100</property>
		<property name="minPoolSize">10</property>
		<property name="maxStatements">200</property>
		<user-overrides user="test-user">
			<property name="maxPoolSize">10</property>
			<property name="minPoolSize">1</property>
			<property name="maxStatements">0</property>
		</user-overrides>
	</default-config>
	<!-- 命名的配置 -->
	<named-config name="XXX">
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/day17</property>
		<property name="user">root</property>
		<property name="password">fujianyi</property>
    <!-- 如果池中数据连接不够时一次增长多少个 -->
		<property name="acquireIncrement">5</property>
		<property name="initialPoolSize">20</property>
		<property name="minPoolSize">10</property>
		<property name="maxPoolSize">40</property>
		<property name="maxStatements">0</property>
		<property name="maxStatementsPerConnection">5</property>
	</named-config>
</c3p0-config>

  

时间: 2024-10-26 12:38:12

数据库连接池--C3P0实现的相关文章

数据库连接池c3p0

一.概述: 数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,c3p0有两种数据源管理方式,一种是通过程序变本身来进行管理,还有一种是通过容器管理,本节讨论通过程序本身来进行管理,下一节讨论通过容器进行管理. 二.c3p0的三种实现方式 1.实现方式一:利用c3p0的API自己动手写代码,实现数据源 例如:在类路径下配置一个属性文件,config.properties,内容如下: Java代码   driverClass=xxx jdbcUrl=xxx user=xxx p

数据库连接JDBC和数据库连接池C3P0自定义的java封装类

数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1.26代表的是版本序列号) 一.JDBC的封装:(java连接MySQL) 1 import java.sql.*; 2 3 import utils.GlobalConstant; 4 5 public class JDBCUtil { 6 7 private JDBCUtil() { 8 9 }

数据库连接池C3P0学习

数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. 一.实现方式: C3P0有三种方式实现: 1.自己动手写代码,实现数据源 例如:在类路径下配置一个属性文件,config.properties,内容如下: driverClass=xxx jdbcUrl=xxx user=xxx password=xxx ... 然后代码中实现 Properties props = new Properties(); InputStream i

Spring数据库连接池 c3p0、dbcp、spring-jdbc

在用dbcp的时候 后面加上 destroy-method="close" 销毁的方法没事 但是用 spring的jdbc就会报错 提示找不到close这个方法  这是为什么? DBCP DBCP(DataBase connection pool),数据库连接池.是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件.单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为

通过实现ServletContextListener接口创建数据库连接池(C3P0方式)

使用Listener步骤 1. 定义Listener实现类 2. 在web.xml中配置(或使用Annotation) 使用C3P0方式创建数据库连接池需要添加的jar包 1.c3p0-0.9.5.jar 2.c3p0-oracle-thin-extras-0.9.5.jar 3.mchange-commons-java-0.2.9.jar 1 package cn.sdut.lah.listener; 2 3 import java.sql.Connection; 4 import javax

记性不如烂笔头22-JAVA数据库连接池 C3P0

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等.C3P0数据源在项目开发中使用得比较多. 1.c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能 c3p0支持更加多的数据库连接池选项. 2.导入相关jar包 c3p0-0.9.0.jar 3.C3P0参数详解 datasource.c3p0.acquireIncrement=10当连接池中的

[数据库连接池二]Java数据库连接池--C3P0和JDNI.

前言:上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法. 1.1.C3P0数据源 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等.C3P0数据源在项目开发中使用得比较多. c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能 1.2.在应用程序中加入C3P0连接池 1.导入相关jar包    c3p0-0.

数据库连接池c3p0和dbcp

转载:http://www.cnblogs.com/haogeBlogs/p/5856302.html 现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中: hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect,告诉连接被重置,这个设置可以解决); hibernate in action推荐使用c3p0和proxool; dbcp所需jar:

数据库连接池——C3P0

定义: 本质上就是个容器(集合)存放数据库连接的容器.当系统初始化以后,容器被创建,容器中就会申请一些连接对象.当用户来访问的数据库的时候,从容器中取连接对象,用户用完之后归还. 使用方法: 标准接口为javax.sql包下的Datasource.(一般不实现该接口,数据库厂商或者连接池厂商来实现这个接口) 获得连接:getConnection(); 归还连接对象给连接池:Connection.close(): 使用步骤: 1  导包 两个包 c3p0-0.9.5.2.jar和mchange-c