dbcp与c3po连接池

Dbcp:效率高,但是安全性一般
C3p0:安全性很高,效率偏低

DBCP也是一个开源的连接池,是Apache Commons成员之一,在企业开发中也比较常见,tomcat内置的连接池。

DBCP连接池目前市面上极为高效的连接池。
DBCP连接池一秒钟可以创建并传递10万个左右的连接对象。

DBCP安全性并不高,有可能在高速运转丢失连接数据

dbcp的使用:

第一步:导入jar
需要的jar
在这里插入图片描述
第二步:配置配置文件
一些常见配置项:
必须项:
driverClassName----- 驱动路径
url-----数据库链接路径
username------数据库用户名,一般为root
password------数据库密码
基本项
maxActive 连接池中 最大连接数量
如果设置了50,代表最多有50个连接。
50个连接被分配出去,50个连接未归还,来第51个线程获取连接,这个线程就会进行等待

minIdle 最小空闲连接

如果连接池有一段时间未有线程来访问,这时连接池就是空闲状态。

连接池最少的连接保有量

maxIdle 最大空闲连接

连接池最大的连接保有量

initialSize 初始化连接
连接池在创建之初,所拥有的连接数量

优化配置(扩展)
logAbandoned 连接被泄露时是否打印
removeAbandoned 是否自动回收超时连接
removeAbandonedTimeout 超时时间(以秒数为单位)
maxWait 超时等待时间以毫秒为单位
timeBetweenEvictionRunsMillis 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位
30000
numTestsPerEvictionRun 在每次空闲连接回收器线程(如果有)运行时检查的连接数量
10
minEvictableIdleTimeMillis 连接在池中保持空闲而不被空闲连接回收器线程

配置文件名称:*.properties
配置文件位置:可存放任意目录,但开发建议src根目录

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db0814
username=root
password=123

initialSize=100
maxActive=50
maxIdle=20
minIdle=60

第三步:创建工具类
dbcp工具类的创建

 public class DbcpUtil {
    	
    	private static DataSource ds;
    	
    	static{
    		try {
    			Properties prop = new Properties();
    			InputStream is = DbcpUtil.class.getClassLoader().getResourceAsStream("dbconfig.properties");
    			prop.load(is);
    			ds = BasicDataSourceFactory.createDataSource(prop);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static DataSource getDataSource(){
    		return ds;
    	}
    	
    	public static Connection getConnection() throws Exception{
    		return ds.getConnection();
    	}
    }

然后就可以使用该工具类进行连接数据库,进行操作了

C3P0连接池
第一步:
需要的jar:
在这里插入图片描述

第二步:
配置文件名称:c3p0-config.xml (固定)
配置文件位置:src (类路径)

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<!-- 默认配置,如果没有指定则使用这个配置 -->
	<default-config>
		<!-- 四项基本配置 -->
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql:///db0814</property>
		<property name="user">root</property>
		<property name="password">123</property>
		
		<!-- 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
  			SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
		<property name="checkoutTimeout">30000</property>
		
		<!--隔多少秒检查连接池的空闲连接,0表示不检查-->
		<property name="idleConnectionTestPeriod">30</property>
		
		<!-- 初始化连接数 -->
		<property name="initialPoolSize">10</property>
		
		<!-- 连接的最大空闲时间,默认为0秒、不会关闭任何连接。设置30秒,30秒到期后,
			连接若未使用就会被关闭 -->
		<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="offcn">
	    <property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql:///db01</property>
		<property name="user">root</property>
		<property name="password">123</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>	

第三步:
写工具类:

public class C3P0Util {
	
	
	private static DataSource ds;
	
	static{
		
		ds = new ComboPooledDataSource();
	}
	
	
	public static DataSource getDataSource(){
		return ds;
	}
	public static Connection getConnection() throws Exception{
		return ds.getConnection();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值