java数据库连接池dbcp的使用
近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机
应用程序已从传统的桌面应用转到Web应用。基于B/S(Browser/Server)架构的3层开发模式逐渐代替C/S(Client/Server)架构的开发模式,成为开发企业级应用和电子商务普遍採用的技术。
在Java语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁,
即Java语言通过JDBC技术訪问数据库。JDBC是一种“开放”的方案,它为数据库应用开发者﹑数据库前台工具开发者提供了一种标准的应用程序设计接口,使开发者能够用纯Java语言编写完整的数据库应用程序。JDBC提供两种API,各自是面向开发者的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC驱动和JDBC-ODBC桥驱动实现与数据库的连接。
一般来说,Java应用程序訪问数据库的过程是:
①装载数据库驱动程序;
②通过JDBC建立数据库连接;
③訪问数据库,运行SQL语句;
④断开数据库连接。
由上面的分析能够看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,
package util; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import org.apache.commons.dbcp.BasicDataSource;
import org.apache.log4j.Logger; /**
* Description: 数据库连接池类
* @filename DataSourceFactory.java
* @date 2013年8月21日 19:47:21
* @author Herman.Xiong
* @version 1.0
* Copyright (c) 2013 Company,Inc. All Rights Reserved.
*/
public class DataSourceFactory {
private static Logger log = Logger.getLogger(DataSourceFactory.class);
private static BasicDataSource bs = null;
public static String driver,url,userName,password; /**
* 创建数据源
* @return
*/
public static BasicDataSource getDataSource() throws Exception{
if(bs==null){
log.info("数据库连接信息:[driver:"+driver+",url:"+url+",userName:"+userName+",password:"+password+"]");
bs = new BasicDataSource();
bs.setDriverClassName(driver);
bs.setUrl(url);
bs.setUsername(userName);
bs.setPassword(password);
bs.setMaxActive(200);//设置最大并发数
bs.setInitialSize(30);//数据库初始化时,创建的连接个数
bs.setMinIdle(50);//最小空暇连接数
bs.setMaxIdle(200);//数据库最大连接数
bs.setMaxWait(1000);
bs.setMinEvictableIdleTimeMillis(60*1000);//空暇连接60秒中后释放
bs.setTimeBetweenEvictionRunsMillis(5*60*1000);//5分钟检測一次是否有死掉的线程
bs.setTestOnBorrow(true);
}
return bs;
} /**
* 释放数据源
*/
public static void shutDownDataSource() throws Exception{
if(bs!=null){
bs.close();
}
} /**
* 获取数据库连接
* @return
*/
public static Connection getConnection(){
Connection con=null;
try {
if(bs!=null){
con=bs.getConnection();
}else{
con=getDataSource().getConnection();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return con;
} /**
* 关闭连接
*/
public static void closeCon(ResultSet rs,PreparedStatement ps,Connection con){
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
log.error("关闭结果集ResultSet异常!"+e.getMessage(), e);
}
}
if(ps!=null){
try {
ps.close();
} catch (Exception e) {
log.error("预编译SQL语句对象PreparedStatement关闭异常!"+e.getMessage(), e);
}
}
if(con!=null){
try {
con.close();
} catch (Exception e) {
log.error("关闭连接对象Connection异常!"+e.getMessage(), e);
}
}
}
}
java数据库连接池dbcp的使用的更多相关文章
- [数据库连接池] Java数据库连接池--DBCP浅析.
		
前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务 ...
 - Java数据库连接池--DBCP浅析.
		
一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.数据库连接是一种关键的有限的昂贵 ...
 - Java数据库连接池比较(c3p0,dbcp,proxool和BoneCP)
		
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp21 Java框架数据库连接池比较(c3p0,dbcp和proxool,Bo ...
 - java常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
		
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
 - java之数据库连接池-dbcp&c3p0&dbutils
		
介绍 因为数据库连接对象的创建比较消耗性能,所以可以在应用程序启动时就在内存中开辟一片空间(集合)存放多个数据库连接对象,后面需要连接时直接从该空间中取而不用新创建:使用完毕后归还连接(将连接重新放回 ...
 - 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
		
主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.BoneCP.Druid等 C3p0: 开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDB ...
 - 一个JAVA数据库连接池实现源码
		
原文链接:http://www.open-open.com/lib/view/open1410875608164.html // // 一个效果非常不错的JAVA数据库连接池. // from:htt ...
 - Java数据库连接池的几种配置方法(以MySQL数据库为例)
		
Java数据库连接池的几种配置方法(以MySQL数据库为例) 一.Tomcat配置数据源: 前提:需要将连接MySQL数据库驱动jar包放进Tomcat安装目录中common文件夹下的lib目录中 1 ...
 - 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
		
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
 
随机推荐
- 转载“用USBOOT制作DOS启动盘”
			
使用软件: Usboot和MaxDOS_5.6s_U盘版. 由于我的U盘容量比较小,暂时只能做DOS启动功能,其它功能如Windows PE,等我以后测试成功后再补充说明. U盘是啥? 读音优盘,可以 ...
 - 每天学点管理学知识——情绪ABC理论
			
什么是ABC理论 ABC理论(ABC Theory of Emotion)是由美国心理学家埃利斯创建的.就是认为激发事件A(activating event 的第一个英文字母)只是引发情绪和行为后果C ...
 - json序列化后日期如何变回来
			
日期格式为 日期小于10的时候 占一位 比如 2019年9月1日 2015/9/1 function ChangeDateFormat(cellval) { var date = ...
 - UIImage拉伸显示
			
下面张图片,是设计来做按钮背景的: button.png,尺寸为:24x60 现在我们把它用作为按钮背景,按钮尺寸是150x50,以下是没有经过技术性拉伸处理的情况: // 得到view的尺寸 ...
 - DataGrid点击上下一页loading效果
			
js添加显示loading和取消loading方法 function showtbloading() { var target = $("#GridView1"); if (tar ...
 - 又爱又恨的BOOTSTRAP
			
搞本书,看了一天,确实,,UIKIT比它好用... 但,艺多不压身吧. 今天自己抄了个大概的,不用其它插件,,但那手风琴,真的找了很多,没有中意的... <!DOCTYPE html> & ...
 - cisco telnet会话SESSION管理及相关Dynagen配置文件
			
#Lab 2-5 autostart = False [localhost] [[2621]] ram = 64 image = C:\Program Files (x86)\Dynamips\ima ...
 - HANDLE HINSTANCE HWND CWnd CDC
			
HANDLE HINSTANCE HWND CWnd CDC 句柄: 柄,把柄 例如一个锅的手柄,你只要抓住了它,你就可以很好地操作那个锅,不过很明显你只能通过锅的手柄来做一些诸如炒菜之类的事,你 ...
 - 裸眼3D立体显示技术原理详解
			
众所周知,现实世界是一个三维空间,除去时间这一维度,现实世界是由长度.宽度和高度三个维度组成,我们每天就生活在这个三维世界中,而现有的显示设备大多数都只能显示二维信息,并不能带给人真实的三维感觉.为了 ...
 - 如何在win下编译thunderbird
			
最近突然想研究一下thunderbird的实现,于是在WIN2K3下对其进行了系列的编译,特将编译的一些心得与大家共享.其实编译过程已经非常简单了,本文以VC8 ( VISUAL STUDIO 200 ...