Java数据库之C3P0和DBCP框架

一、C3P0框架:

1、数据库xml文件的配置:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>

  <default-config>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
	<property name="jdbcUrl">jdbc:mysql:///classwork</property>
	<property name="user">root</property>
	<property name="password">9919</property>
	<property name="initialPoolSize">5</property>
	<property name="maxPoolSize">20</property>
  </default-config>
  
  <named-config name="michong"> 
    <property name="driverClass">com.mysql.jdbc.Driver</property>
	<property name="jdbcUrl">jdbc:mysql:///classwork</property>
	<property name="user">root</property>
	<property name="password">9919</property>
  </named-config>

</c3p0-config>
<default-config> new ComboPooledDataSource() 加载的
<named-config name="michong"> new ComboPooledDataSource("michong") 加载的

2、从帮助文档中获得c3p0-config.xml并修改相应的参数
常用的配置项
分类
属性
描述
必须项
user
用户名
password
密码
driverClass
驱动
mysql 驱动, com.mysql.jdbe.Driver
jdbcUrl
路径
mysql 路径, jdbc:mysql://localhost:3306/ 数据库
基本配置
acquirelncrement
连接池无空闲连接可用时,一次性创建的新连接数
默认值: 3
initialPoolSize
连接池初始化时创建的连接数 默认值: 3
maxPoolSize
连接池中拥有的最大连接数 默认值: 15
minPoolSize
连接池保持的最小连接数。
maxIdleTime
连接的最大空闲时间。如果超过这个时间,某 个数据库连接还没有被使用,则会断开掉这个 连接,如果为 0, 则永远不会断开连接。
默认值: 0
管理连接池的大 小和连接的生存 时间(扩展)
maxConnectionAge
配置连接的生存时间,超过这个时间的连接将 由连接池自动断开丢弃掉。当然正在使用的连 接不会马上断开,而是等待它 close 再断开。配 置为〇的时候则不会对连接的生存时间进行限 制。默认值 0
maxIdleTimeExcessConnections
这个配置主要是为了减轻连接池的负载,配置不为〇 , 则会将连接池中的连接数量保持到 minPoolSize, 0 则不处理。
配置 Prepared Statement 缓存(扩
展)
maxStatements
连接池为数据源缓存的 PreparedStatement 的总数。由于 PreparedStatement 属于单个 Connection, 所以这个数量应该根据应用中平均连接数乘以每个连接的平均 PreparedStatement 来计算。为 0 的时候不缓存,同时 maxStatementsPerConnection 的配置无效。
maxStatementsPerConne ction
连接池为数据源单个 Connection 缓存的 PreparedStatement 数,这个配置比 maxStatements 更有意义,因为它缓存的服务对 象是单个数据连接,如果设置的好,肯定是可以提高性能的。为 0 的时候不缓存。

3、自定义工具类:C3P0Utils:
import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Utils {

	private	static DataSource ds = new ComboPooledDataSource();
	
	//获取连接池对象
	public static DataSource getDataSource(){
		return ds;
	}
	
	
	//获取Connection对象
	public static Connection getConnection(){
		Connection conn;
		try {
			conn = ds.getConnection();
			return conn;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new RuntimeException();
		}
		
	}

二、DBCP框架的使用:
1、 配置文件
配置文件名称:*.properties
配置文件位置:任意,建议src (classpath/ 类路径)
配置文件内容:properties 不能编写中文,必须使用记事本修改内容,否则中文注释就乱码了。
常用配置项
分类
属性
描述
必须项
driverClassName
驱动
url
路径
username
用户名
password
密码
基本项
maxActive
最大连接数量
minldle
最小空闲连接
maxldle
最大空闲连接
initialSize
初始化连接
优化配置(扩展)
logAbandoned
连接被泄露时是否打印
removeAbandoned
是否自动回收超时连接
removeAbandonedTimeout
超时时间 ( 以秒数为单位)
maxWait
超时等待时间以毫秒为单位 1000 等于 60
timeBetweenEvictionRunsMillis
在空闲连接回收器线程运行期间休眠的时间值 , 以毫秒为单位
numTestsPerEvictionRun
在每次空闲连接回收器线程 ( 如果有 ) 运行时检查的连接数量
minEvictableldleTimeMillis
连接在池中保持 $ 闲而不被空闲连接回收器线程

2、封装的DBCPUtils类:
public class DBCPUtils {
	
	private static DataSource ds ;
	static{
		try {
			//加载配置文件
			InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("conninfo.properties");
			
			Properties p = new Properties();
			p.load(is);
			
			//通过DBCP获得连接池
			ds = BasicDataSourceFactory.createDataSource(p);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	//获得连接池
	public static DataSource getDataSource(){
		return ds;
	}

	//获得连接对象
	public static Connection getConnection() throws SQLException{
		
		return ds.getConnection();
	}
}

用到的jar包



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值