采用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 ...
随机推荐
- angularjs表单验证checkbox
angularjs中默认有表单验证的支持,见文末的refer 我想要验证至少要选择一个checkbox,否则就不能提交 但是checkbox貌似没有简单的方法,想来想去给出下面的解决方案 valida ...
- [转]关于Android系统的”点九”
李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/321.html 前几天群成员讨论过关 ...
- 使用EmBitz开发STM32项目的环境配置
一.EmBitz软件获取与安装 1.EmBitz软件的获取 EmBitz原名Em::Blocks,是基于Code::Blocks开发的,面向嵌入式的C/C++集成开发环境.支持J-Link和ST-Li ...
- Memcache之telnet操作
在telnet Memcache之前,先要确认 memcached已启用. 如:ps -ef |grep memcache netstat -elp |grep memcache 或者 netstat ...
- 51nod1079(中国剩余定理)
题目链接: http://www.51nod.com/onlineJudge/user.html#!userId=21687 题意: 中文题诶~ 思路: 本题就是个中国剩余定理模板题,不过模拟也可以过 ...
- 【leetcode】Excel Sheet Column Title & Excel Sheet Column Number
题目描述: Excel Sheet Column Title Given a positive integer, return its corresponding column title as ap ...
- 【chrome插件】web版微信接入图灵机器人API实现自动回复
小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...
- redis数据类型之—Set
(1)set 简单介绍 set集合的数据是不重复的.无序的,一个集合类型键可以存储至多2^32-1 个字符串. (2)set 常用命令
- WPF基础知识、界面布局及控件Binding(转)
WPF是和WinForm对应的,而其核心是数据驱动事件,在开发中显示的是UI界面和逻辑关系相分离的一种开放语言.UI界面是在XAML语言环境下开发人员可以进行一些自主设计的前台界面,逻辑关系还是基于c ...
- shell example01
条件判断 if [[ -e ${1} ]]; then echo "$(tput setaf 2) found ${1} $(tput sgr0)" cat ${1} else e ...