数据源c3p0的使用

首先我们先准备c3p0的jar包,我这里的jar包名字叫

c3p0-0.9.1.2.jar

我们一共有三种配置方式,现在先用代码java列出来

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * c3p0
 * 性能好,开源以后一般用它
 */
public class Demo1 {
	/**
	 * 代码配置
	 * @throws PropertyVetoException
	 * @throws SQLException
	 */
//	@Test
	public void connPool1() throws PropertyVetoException, SQLException {
		// 创建连接池对象
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		// 对池进行四大参数的配置
		dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver");
		dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
		dataSource.setUser("chj");
		dataSource.setPassword("chj");	
		// 池配置
		//每次新增多少连接
		dataSource.setAcquireIncrement(5);
		//初始连接数多少
		dataSource.setInitialPoolSize(20);
		//最少连接数
		dataSource.setMinPoolSize(2);
		//最大连接数
		dataSource.setMaxPoolSize(50);
		Connection con = dataSource.getConnection();
		System.out.println(con);
		con.close();
	}
	
	/**
	 * 配置文件的默认配置
	 * @throws SQLException 
	 */
//	@Test
	public void connPool2() throws SQLException{
		/**
		 * 在创建连接池对象时,这个对象就会自动加载配置文件!不用我们来指定
		 */
		ComboPooledDataSource dataSource  = new ComboPooledDataSource();
		
		Connection con = dataSource.getConnection();
		System.out.println(con);
		con.close();
	}
	
	/**
	 * 使用命名配置信息
	 * @throws SQLException
	 */
	@Test
	public void connPool3() throws SQLException{
		/**
		 * 构造器的参数指定命名配置元素的名称!
		 * <named-config name="oracle-config"> 
		 */
		ComboPooledDataSource dataSource  = new ComboPooledDataSource("oracle-config");
		
		Connection con = dataSource.getConnection();
		System.out.println(con);
		con.close();
	}
}

而配置文件方法的配置信息如下,我这是只是连接oracle而已,当然也可以连接其他的数据库

c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<!-- 这是默认配置信息 -->
	<default-config> 
		<!-- 连接四大参数配置 -->
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb3</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">123</property>
		<!-- 池参数配置 -->
		<property name="acquireIncrement">3</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">2</property>
		<property name="maxPoolSize">10</property>
	</default-config>

	<!-- 专门为oracle提供的配置信息 -->
	<named-config name="oracle-config"> 
		<property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>
		<property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
		<property name="user">luowg</property>
		<property name="password">luowg</property>
		<!-- 连接不足时,会自动创建连接,这里指定会创建多少连接 -->
		<property name="acquireIncrement">3</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">2</property>
		<property name="maxPoolSize">10</property>
	</named-config>
</c3p0-config>

上面的只是个例子,教如何使用。

但在实际的javaWeb开发中,我们的数据源一般都受到spring的管理,所以我们在spring是怎么注入的呢?

<!-- 配置数据源 -->
	<!-- 导入资源文件 -->
	<context:property-placeholder location="classpath:/config/database.properties"/>
	
	<!-- c3p0 数据源 -->
 	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="initialPoolSize" value="5"></property>
		<property name="minPoolSize" value="5"/>
	    <property name="maxPoolSize" value="10"/>
	    <property name="maxIdleTime" value="600"/>
	    <property name="maxStatements" value="0"/>
	</bean>

我的资源文件database.properties如下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/ordro?useUnicode\=true&characterEncoding\=utf-8&autoReconnect\=true&failOverReadOnly\=false
jdbc.username=chj
jdbc.password=chj
jdbc.initPoolSize=5
jdbc.maxPoolSize=10

具体可以看我的文章spring和mybatis的结合,里面就是用到了c3p0数据源。

文章链接:http://blog.csdn.net/qq_18895659/article/details/51772577


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值