c3p0数据连接池结合单例的应用

package com.servletjsp.utils;

import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**1.使用DBUtils工具连接数据库进行数据的相关操作
 * 2.DBUtils来自apchede 子项目,是一个对jdbc操作数据库语句的封装,简化了jdbc复杂的操作语句流程,全程最重要的对象是Queryrunner对象,该对象实现了对数据库的操作
 *    语句的调用,查询单体对象数据时候用BeanHandler<object>(object.class)对象,返回的是一个对象类型;查询聚合函数使用ScalarHandler<>()对象;增删改都用update方法,
 *    直接在方法内放sql语句和参数;查询时候参数放在BeanHandler对象后,查询所有数据时用ResultSetHandler<list<object>>();使用简单,易学。
 *    3.使用c3p0数据连接池进行数据库连接操作,c3p0代替jdbc的优点就是连接方便简单,其使用数据连接池子化,其核心就是在连接的中间设置一个list集合,其内部包含了connction,设置初始化大小
 *       当使用者需要connection时候,就会从结合中使用remove方法,获取一个现有的connection,当connection使用完后,在调用connection。close(),方法将connection放回到池子中去,
 *         在池子中包含初始化大小,和每次增长的实例及最大连接数量,等的设置。c3p0的配置文件直接放到src路径下面系统自动加载文件识别,不需设置读取配置文件。
 *         
 *  4.使用单例模式实现数据连接池的配置实现,  使用单例几点:第一构造方法私有化,   第二静态应用指向自生,第三以自己实例为返回值的公有静态方;  
 * @author Administrator
 *
 */
public class DBUtils {

	private static DBUtils jdbcUtils;
	
	//数据源,数据连接池
	private static ComboPooledDataSource dataSource; 
	
	static {
		//初始化数据源
		dataSource=new ComboPooledDataSource();
	}
	
	//私有化构造方法,禁止外部代码实例化对象
	private DBUtils() {
		
	}
	
	//实例化对象,单例的设计实现,提供对外访问实例的静态方法
	public static DBUtils getInstence() {
		//判断  如果实例为空才创建实例,这样保证实例的使用效率。
		if(jdbcUtils==null) {
			jdbcUtils=new DBUtils();
		}
		return jdbcUtils;
	}
	
	//创建数据连接池的queryrunner对象, 配置数据连接池
	public QueryRunner getQuery() {
		QueryRunner queryRunner=new QueryRunner(dataSource);
		return queryRunner;
	} 
	
	//获取DataSource数据源 ,将connection连接放到数据连接池中
	public DataSource getDataSource() {
		
		return dataSource;
	}
}


//c3p0.properties 配置文件

#驱动类
c3p0.driverClass=com.mysql.jdbc.Driver
#连接URL
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/taotao
#用户
c3p0.user=root
#密码
c3p0.password=mysql
#初始化大小
c3p0.initialPoolSize=3
#最小池子数量
c3p0.minPoolSize=3
#设置最大连接数量
c3p0.maxPoolSize=10
#最大等待空闲时间
c3p0.maxIdleTime=60

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值