JDBC学习之路(十一)使用开源项目DBCP

大家使用过JDBC的都知道,这个数据源在数据库连接的时候非常重要,对于性能的优化更是大大的提升,当然了,

一般只需要了解数据源是包装了从数据库获得的连接,然后放到连接池中,使用的时候直接从连接池中拿出连接,使用

完毕后,就再放入到连接池中,然后对于Connection 的使用没有改变,还是直接close。其实是对Close方法做了内部

实现改进,不是关闭连接而是把连接放入到连接池中。这样使用的时候是感觉不到的,而且数据源的优化远远不止这

些,它还能够动态的控制连接池内活动连接的多少,根据系统的负载动态的增加或者减少连接池内部的活动链接个数。

可以说是非常好的,当然了,实现一个真正能应用的数据源是非常复杂的,我们先学会怎么使用就好,下面来演示一下

如何使用Apache的开源项目,DBCP,DataBase Connection Pool的缩写。

首先需要下载commons-dbcp-1.4-bin,但是他倚赖commons-collections-3.2.1-bin,commons-pool-1.6-bin,这两

个包,需要把他们的JAR包导入到工程中,然后需要一个配置文件来配置一下连接数据库的一些默认参数

#连接设置 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username=root password=mysql #<!-- 初始化连接 --> initialSize=10 #最大连接数量 maxActive=50 #<!-- 最大空闲连接 --> maxIdle=20 #<!-- 最小空闲连接 --> minIdle=5 #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 --> maxWait=60000 #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。 connectionProperties=useUnicode=true;characterEncoding=gbk #指定由连接池所创建的连接的自动提交(auto-commit)状态。 defaultAutoCommit=true #driver default 指定由连接池所创建的连接的只读(read-only)状态。 #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix) defaultReadOnly= #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。 #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE defaultTransactionIsolation=READ_UNCOMMITTED
最后就是使用了,其实非常简单,就是一句代码

package com.bird.jdbc; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; /** * JDBC工具类 * @author bird * */ public final class Temple { private static DataSource dataSource; private Temple() { } static { try { Class.forName("com.mysql.jdbc.Driver"); Properties pro = new Properties(); InputStream in = Temple.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"); pro.load(in); dataSource = BasicDataSourceFactory.createDataSource(pro);//注意这段代码!!! } catch (Exception e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } public static void free(Connection con, Statement st, ResultSet rs) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (con != null) try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
BasicDataSourceFactory.createDataSource(pro);这句话就是使用dbcp的代码,非常简单,下面的工作就是交给

DBCP去完成了哦!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值