数据库连接池和DBUtils


数据库连接池

概述

1.用池来管理Connection,这可以重复使用Connection
连接池也是使用四大连接参数来创建连接对象

2.池参数(所有池参数都有默认值)
  初始大小:10个
  最小空闲连接数:3个
  增量:一次创建的最小单位(5个)
  最大空闲连接数:12个
  最大连接数:20个
  最大的等待时间:1000毫秒

3.实现的接口
连接池必须实现:javax.sql.DataSource接口
连接池返回的Connection对象,调用它的close()不是关闭,而是把连接归还给池

DBCP连接池

DBCP是Apache提供的一款开源免费的数据库连接池
需要使用两个jar包:commons-dbcp-1.4.jar和commons-pool-1.3.jar(以及mysql驱动包)
使用方法:

	BasicDataSource dataSource = new BasicDataSource();//创建连接池对象
	//配置四大参数
	dataSource.setUsername("root");
	dataSource.setPassword("123");
	dataSource.setUrl("jdbc:mysql://localhost:3306/mydb3");
	dataSource.setDriverClassName("com.mysql.jdbc.Driver");
	//设置池参数
	dataSource.setMaxActive(20);//最大连接数
	dataSource.setMaxIdle(10);//最大空闲连接数
	dataSource.setInitialSize(10);//初始化连接数
	dataSource.setMinIdle(2);//最小空闲连接数
	dataSource.setMaxWait(1000);//最大等待毫秒数
	Connection con = dataSource.getConnection();//得到连接对象
	con.close();//把连接归还给池,dbcp对mysql中connection的close()方法进行增强(装饰设计模式)
	//con对象方法,只有close()方法是dbcp自己的

装饰者模式

1.对象增强的手段
(1)继承:会使类增多
被增强的对象固定的
增强的内容也是固定的
(2)装饰者模式
被增强的对象是可以切换的
增强的内容是固定的
(3)动态代理(AOP)
被增强的对象可以切换:Service
增强的内容也可以切换:事务处理

2.学过的装饰类
BufferedInputStream:装饰流!创建我是一定要给我一个底层对象,然后我不管你给我的是什么流,我都会给它添加缓冲区!

	class MyConnection implements Connection {
   
		private Connection con;//底层对象,被增强对象

		public MyConnection(Connection con){
   //通过构造器传递底层对象!
	    		this.con = con;
		}

		public Statement createStatement() {
   依赖被增强对象
			return con.createStatement();
		}
		// 增强点
		public void close(){
   
			把当前连接归还给池!
		}
	}

C3P0连接池

1.C3PO使用方法(常用):
需要两个jar包:c3p0-0.9.2-pre1.jar和mchange-commons-0.2.jar(以及mysql驱动包)
区别于DBCP:dbcp底层依赖装饰模式,而C3P0依赖动态代理(APO)

	ComboPooledDataSource ds = new ComboPooledDataSource();
	//基本配置
	ds.setJdbcUrl("jdbc:mysql://localhost:3306/mydb1");
	ds.setUser("root");
	ds.setPassword("123");
	ds.setDriverClass("com.mysql.jdbc.Driver");	
	//池配置
	ds.setAcquireIncrement(5);//每次的增量为5
	ds.setInitialPoolSize(20);//初始化连接数
	ds.setMinPoolSize(2);//最少连接数
	ds.setMaxPoolSize(50);//最多连接数
	
	Connection con = ds.getConnection();
	System.out.println(con);
	con.close();

2.c3p0也可以指定配置文件,而且配置文件可以是properties,也是xml的
注:c3p0的配置文件名必须为c3p0-config.xml,且必须放在类路径下(src)

	<?xml version="1.0" encoding="UTF-8"?>
	<c3p0-config>
		<default-config><!-- 默认配置 -->
			<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property>
			<property name="driverClass">com.mysql.jdbc.Driver</property>
			<property name="user"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值