采用DBCP连接池技术管理连接
DBCP的使用步骤
步骤一:
导包,使用第三方的道具,必须导入相应的jar包。
一般需要导入两个jar包:
-commons-dbcp-1.x.jar包
-commons-pool-1.x.x.jar包
步骤二:
使用代码~看看下面代码的演示吧
/*
* 采用DBCP连接池技术,管理连接
*/ public class DBUtil2 { private static BasicDataSource ds; //为不同线程管理连接
private static ThreadLocal<Connection> t1; static{ try{
//从配置文件读取数据库连接的参数
Properties prop=new Properties();
InputStream is=DBUtil2.class.getClassLoader().getResourceAsStream("config2.properties"); prop.load(is);
is.close(); //初始化连接池
ds=new BasicDataSource(); //加载数据库
ds.setDriverClassName(prop.getProperty("driver")); //设置url
ds.setUrl(prop.getProperty("url")); //设置数据库用户名和密码
ds.setUsername(prop.getProperty("user"));
ds.setPassword(prop.getProperty("psw")); //其他关于连接数量等等的参数的设置
ds.setInitialSize(Integer.parseInt(prop.getProperty("initsize")));
/*此方法不支持已经不支持了?
* ds.setMaxActive(Integer.parseInt(prop.getProperty("maxactive")));
*/
ds.setMaxWaitMillis(Integer.parseInt(prop.getProperty("maxwait")));
ds.setMaxIdle(Integer.parseInt(prop.getProperty("maxidle")));
ds.setMinIdle(Integer.parseInt(prop.getProperty("minidle"))); //初始化线程本地TreadLocal
t1=new ThreadLocal<Connection>(); }catch(Exception e){
e.printStackTrace();
} } public static Connection getConnection() throws SQLException{
Connection conn=ds.getConnection();//从连接池中取一个连接 t1.set(conn);
return conn;
} public static void closeConnection(){
try{
Connection conn=t1.get();
if(conn!=null){ //恢复连接为自动提交事务(此处用于事务处理)
conn.setAutoCommit(true); /*
* 通过连接池获取的Connection的close()方法,
* 实际上并没有将连接关闭,而是将该连接归还。
*/
conn.close();
t1.remove();
}
}catch(Exception e){
e.printStackTrace();
}
} }
PS:
此处亦用到了ThreadLocal(线程本地)的知识,请参照以下连接
http://www.cnblogs.com/dreamroute/p/5034726.html
采用DBCP连接池技术管理连接的更多相关文章
- JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生
一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...
- 线程池-连接池-JDBC实例-JDBC连接池技术
线程池和连接池 线程池的原理: 来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客 ...
- 走进JavaWeb技术世界3:JDBC的进化与连接池技术
走进JavaWeb技术世界3:JDBC的进化与连接池技术 转载公众号[码农翻身] 网络访问 随着 Oracle, Sybase, SQL Server ,DB2, Mysql 等人陆陆续续住进数据库 ...
- 开源的连接池技术DBCP和C3P0
概述: Sun公司约定: 如果是连接池技术,需要实现一个接口! javax.sql.DataSource; 相关jar包和资料下载 1.1 DBCP连接池: l DBCP 是 Apache 软 ...
- 解密httpclient,dbcp,jedis,c3p0,druid,okhttp都在使用的连接池技术
最近在连接池上面栽了个跟头(参见这里),引起我对池技术的强烈关注,这几天总结了一下很多场景都会使用的池技术: 池概念 pool,中文翻译为水池,但是在英文中,还有一种解释是 an organizati ...
- Mybatis 的连接池技术
我们在前面的 WEB 课程中也学习过类似的连接池技术,而在 Mybatis 中也有连接池技术,但是它采用的是自 己的连接池技术.在 Mybatis 的 SqlMapConfig.xml 配置文件中,通 ...
- 2017.10.21 Java中的数据源与连接池技术
1.数据源技术就是预先建立好一定的数量的数据库连接,并将这些连接保存在连接池中,有连接池负责对这些数据库连接管理,当访问数据库时,只需要从连接池中取出有空闲状态的数据库连接:当程序访问数据库结束时,释 ...
- DBCP连接池与c3p0连接池
1. DBCP连接池
- Java Redis系列3(Jedis的使用+jedis连接池技术)
Jedis的使用 什么是Jedis? 一款Java操作redis数据库的工具 使用步骤 1.下载redis所需的java包 2.使用步骤 import org.junit.Test; public c ...
随机推荐
- 关于 Mybatis 的Invalid bound statement (not found):错误
今天遇到一个特别奇怪的问题,最后发现是自己对mybatis的学习还有待提高 返回类型可以用resultType,也可以用resultMap resultType是直接表示返回类型的,而resultMa ...
- XmlException: 名称不能以“<”字符(十六进制值 0x3C)开头
svn 版本冲突引起的: 产看config 文件里面的内容是否冲突,这个问题可能和代码无关
- spring quartz分布式任务计划
spring quartz分布式任务计划 环境: 通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz ...
- 使用Angular2理由
1. 组件化 组件化编程是web 发展的一个趋势,Angular2提供高效简单的组件开发方式,使程序开发更加关注业务逻辑的实现,而不用关心如何加载组件和模块,如何引用及依赖注入的实现等. 如下代码所示 ...
- dateset添加一列
ds.Tables[].Columns.Add("short_name", System.Type.GetType("System.String"));//直接 ...
- Sql常用语法以及名词解释
Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...
- 终端下vim无法输入问题解决
最近回归vim时发现会偶尔出现vim无法输入,但光标在动的情况,一度怀疑是spf13的问题,后来经搜索,才发现是因为vim下,快捷键 Ctrl+s 的功能是停止输入,在IDE下编程时间长了,都有潜意识 ...
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- LinQ和ADO.Net增删改查 备忘
是否些倦了 SqlConnection conn=new SqlConnection();一系列繁冗的代码? 来试试Linq吧 查: using System.Data.SqlClient; name ...
- Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...