Java使用独立数据库连接池(DBCP为例)
于是数据连接池技术便产生了,其原理就是在数据请求方和数据库之间建立一个数据库连接管理层。在系统启动的时候就分配一定数量的连接,并维护这些连接,保持最低数量的连接数。同时为了保护数据库和系统,设置一个最大连接数,缓解数据库的访问压力。
这样在每次数据请求方需要连接时,管理器便分配一个连接给数据请求方,数据请求方使用完连接后,将连接归还给管理器,这样就尽可能的减少不必要的数据库连接消耗。
在Java的数据库服务JDBC中并没有提供一个实际ConnectionPool实现,但是留出了接口以支持第三方服务提供商,我觉得其中最重要的接口是DataSource。
实际上Java访问数据库的方式主要有四种:
一、使用DriverMananger来直接编程实现,这种是最基本的方式。
DriverMananger实现数据库连接的关键步骤为:
1>Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
2>Connection conn = null;
3>conn = DriverManager.getConnection(url, "name", "password");
二、使用服务器配置文件来实现连接池。
一些服务器提供了自己的数据库连接池服务,例如Tomcat服务器就提供了由commons-DBCP支持的数据池连接服务,只需要在context.xml中填写相应的数值就可以了。
三、配置文件配置 datasource
DataSource是在JavaAPI中提供的一个接口,第三方服务在实现了DataSource之后,例如DBCP的BasicDataSource,为了提高数据库连接池的可配置性,便利用IOC模式(控制反转),将实际的Bean与配置数据分开,配置数据放在配置文件中(一般使用XML)。来实现对多个数据库的控制。
而在DataSource对象实例化之后,通过DataSource.getConnection()就可以得到连接了。
四、通过配置jdbc-odbc连接桥
听说过,没有使用过,没有发言权。
在这里使用Apache提供的commons-DBCP来实现一个独立的简单的数据库连接池。
首先需要三个工具包:commons-pool.jar,commons-collection.jar,commons-DBCP.jar。
关键实现代码段见下:
- //持有一个静态的数据库连接池对象
- private static DataSource DS;
- //使用DBCP提供的BasicDataSource实现DataSource接口
- public static void initDataSource(String connectURI, String username,
- String password, String driverClass, int initialSize,
- int maxActive, int maxIdle, int maxWait) {
- BasicDataSource ds = new BasicDataSource();
- ds.setDriverClassName(driverClass);
- ds.setUsername(username);
- ds.setPassword(password);
- ds.setUrl(connectURI);
- ds.setInitialSize(initialSize);
- ds.setMaxActive(maxActive);
- ds.setMaxIdle(maxIdle);
- ds.setMaxWait(maxWait);
- DS = ds;
- }
- //获得一个数据库连接
- public Connection getConnection() {
- Connection con = null;
- if (DS != null) {
- try {
- con = DS.getConnection();
- } catch (Exception e) {
- System.out.println(e.getMessage()); }
- //将数据库连接的事物设置为不默认为自动Commit
- try {
- con.setAutoCommit(false);
- } catch (SQLException e) {
- System.out.println(e.getMessage()); }
- return con;
- }
- //回收数据库连接时,直接使用con.close()即可
- return con;
- }
- //回收数据库连接
- protected static void shutdownDataSource() throws SQLException {
- BasicDataSource bds = (BasicDataSource) DS;
- bds.close();
- }
上面的代码都是从实际使用的代码抽取出来的,希望可以帮助大家。
目前,OpenSource中提供了很多的数据库连接池技术,使用的流程和模式,都与上面的代码大同小异。同时最新发布的BoneCP我还从来没有感受过,希望有朋友与我分享一下使用经验。
- commons-collections-3.2.1.jar (561.9 KB)
- 下载次数: 73
- commons-pool-1.5.5.jar (97.8 KB)
- 下载次数: 55
- commons-dbcp-1.4.jar (156.8 KB)
- 下载次数: 59
Java使用独立数据库连接池(DBCP为例)的更多相关文章
- [数据库连接池] Java数据库连接池--DBCP浅析.
前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务 ...
- java常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
- 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
- DataSource - 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
- 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明.RP
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
- 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明(转)
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
- java数据库连接池dbcp的使用
近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架构的3层开发模式 ...
- java之数据库连接池-dbcp&c3p0&dbutils
介绍 因为数据库连接对象的创建比较消耗性能,所以可以在应用程序启动时就在内存中开辟一片空间(集合)存放多个数据库连接对象,后面需要连接时直接从该空间中取而不用新创建:使用完毕后归还连接(将连接重新放回 ...
- Java数据库连接池--DBCP浅析.
一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.数据库连接是一种关键的有限的昂贵 ...
随机推荐
- 总有一些实用javascript的元素被人遗忘在角落-slice
slice() 方法可从已有的数组中返回选定的元素. 好吧,我承认我竟然把它忘了! 这次我在回顾一下它 语法 arrayObject.slice(start,end) 数组.slice(起始,结束) ...
- javascript构造函数模块
var Person = (function(){ var Constr; Constr = function(){ this.name = 'carl'; } Constr.prototype = ...
- 20155315 2016-2017-2 《Java程序设计》第七周学习总结
教材学习内容总结 第12章 Lambda语法 Lambda定义 一个不用被绑定到一个标识符上,并且可能被调用的函数. 在只有Lambda表达式的情况下,参数的类型必须写出来,如果有目标类型的话,在编译 ...
- 第9月第5天 AVVideoAverageBitRateKey
1. https://stackoverflow.com/questions/11751883/how-can-i-reduce-the-file-size-of-a-video-created-wi ...
- plsql 用法和技巧
1.导入csv文件 2.保存登录的密码
- MySQL binlog导入失败
一个同事问我,说他用innobackupex恢复数据后用mysqlbinlog导入增量数据时,发现数据没有导入进去并且也没有报错. mysqlbinlog /u01/mysql_py/database ...
- asp.net动态增加服务器端控件并提交表单
为什么要用原生的呢? 1.目的 原生出现浏览器兼容性问题 极少,不用测试多浏览兼容性 .需要考虑到市面上的其他垃圾浏览器. 2.性能不好 如果不考虑第一条 你可以换一种方式 直接上代码 .aspx页面 ...
- vistual studio 去除 git 源代码 绑定
第一次碰到这个问题,想将源代码签入TFS管理.添加到源码管理后,默认添加到Git源码管理. 研究过后,发现: 1)删除框内文件 2)Vs->工具->选项->源代码管理->插件管 ...
- 微服务架构及Eureka简介
一.微服务架构 服务提供者.服务消费者.服务发现组件这三者之间的关系: 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息. 服务消费者可从服务发现组件查询服务 ...
- centos7系统下安装配置jdk、tomcat教程
JDK安装与配置 1.下载linux版本的jdk,我下的版本是jdk6.0,下载rpm版本的. 可通过百度搜索文件名:jdk-6u45-linux-x64-rpm.bin下载 也可通过oracle官网 ...