700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > DBCP 数据库连接池的实现

DBCP 数据库连接池的实现

时间:2018-09-18 10:57:38

相关推荐

DBCP 数据库连接池的实现

DBCP数据源

DBCP 是 Apache 软件基金组织下的开源连接池实现,要使用DBCP数据源,需要应用程序应在系统中增加如下两个 jar 文件:

Commons-dbcp.jar:连接池的实现Commons-pool.jar:连接池实现的依赖库

Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。

在应用程序中加入dbcp连接池

1.导入commons-dbcp-1.2.jar、commons-pool-1.6.jar包

2.在类目录下加入dbcp的配置文件:dbcpconfig.properties

dbcpconfig.properties的配置信息如下:

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

3、在获取数据库连接的工具类(如jdbcUtils)的静态代码块中创建池

package pany;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 mons.dbcp.BasicDataSourceFactory;/*** @ClassName: JdbcUtils_DBCP* @Description: 数据库连接工具类* @author: sunyan* @date: -10-4 下午6:04:36**/ public class JdbcUtils_DBCP {/*** 在java中,编写数据库连接池需实现java.sql.DataSource接口,每一种数据库连接池都是DataSource接口的实现* DBCP连接池就是java.sql.DataSource接口的一个具体实现*/private static DataSource ds = null;//在静态代码块中创建数据库连接池static{try{//加载dbcpconfig.properties配置文件InputStream in = JdbcUtils_DBCP.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");Properties prop = new Properties();prop.load(in);//创建数据源ds = BasicDataSourceFactory.createDataSource(prop);}catch (Exception e) {throw new ExceptionInInitializerError(e);}}public static Connection getConnection() throws SQLException{//从数据源中获取数据库连接return ds.getConnection();}public static void release(Connection conn,Statement st,ResultSet rs){if(rs!=null){try{//关闭存储查询结果的ResultSet对象rs.close();}catch (Exception e) {e.printStackTrace();}rs = null;}if(st!=null){try{//关闭负责执行SQL命令的Statement对象st.close();}catch (Exception e) {e.printStackTrace();}}if(conn!=null){try{//将Connection连接对象还给数据库连接池conn.close();}catch (Exception e) {e.printStackTrace();}}}}

3.测试DBCP数据源

package pany;import java.sql.*;public class dbcpDataSourceTest {public static void main(String[] args) {try {Connection conn=JdbcUtils_DBCP.getConnection();//通过数据库的连接操作数据库,实现增删改查(使用Statement类)String sql=""+"insert into sensor_static(obj_ver,protSize,beginTime,connectStatic,information,endTime) values("+"?,?,?,?,?,?)";PreparedStatement pst=conn.prepareStatement(sql);pst.setLong(1,1);pst.setInt(1,0);pst.setString(2,"protSize");pst.setTimestamp(3, new Timestamp(new java.util.Date().getTime()));pst.setString(4,"connect");pst.setString(5,"information");pst.setTimestamp(6, new Timestamp(new java.util.Date().getTime()));pst.execute();JdbcUtils_DBCP.release(conn,pst,null);} catch (SQLException e) {e.printStackTrace();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。