现在的位置: 首页 > 综合 > 正文

数据库连接池技术

2013年08月22日 ⁄ 综合 ⁄ 共 1368字 ⁄ 字号 评论关闭

 

数据库连接池的解决方案是:当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接
池。每次应用程序请求数据库连接时,无须重新打开连接,而是从池中取出已有的连接使用,使用完后,不再
关闭数据库连接,而是直接将连接归还给连接池。通过使用连接池,将大大提高程序运行效率。

对于共享资源的情况,有一个通用的设计模式:资源池(Resource Pool),用于解决资源的频繁请求、释放所造成
的性能下降。为了解决数据库连接的频繁请求、释放,JDBC2.0规范引入了数据库连接池技术。数据库连接池
是Connection对象的工厂。数据库连接池的常用参数有如下:
●数据库的初始连接数
●连接池的最大连接数
●连接池的最小连接数
●连接池的每次增加的容量

JDBC的数据库连接池使用javax.sql.DataSource来表示,DataSource只是一个接口,该接口通常由商用服务
器(如WebLogic、WebSphere等)提供实现,也有一些开源组织提供实现(如DHCP和C3P0等)。

DataSource通常被称为数据源,它包含连接池和连接池管理两个部分,但习惯上我们也经常把DataSouce称为连接池。
下面介绍两种开源的数据源的实现。
DBCP数据源:
DBCP是Apache软件基金组织下的开源连接池实现,该连接池依赖组织下的另一个开源系统,common-pool。
如需使用该连接池实现,应在系统中增加如下两个jar文件:
◇commons-dbcp.jar:连接池的实现
◇commons-pool.jar:连接池实现的依赖库
提示:可从apache网站下载commons-pool.zip和comons-dbcp.zip这两个压缩包,解压缩两个文件即可得到上面提到的两个jar
文件。

tomcat的连接池正是采用该连接池来实现的。数据库连接池既无可以与应用服务器整合使用,也可以由应用程序独立使用。下面的代码
片段示范了使用DBCP来获得数据库连接的方式:
//创建数据库源对象
BasicDataSouce ds = new BasicDataSource();
//设置连接池所需的驱动
ds.setDriverClassName("com.mysql.jdbc.Driver"):
//设置连接数据库的url
ds.setUrl(...);
//设置用户名
ds.setUsername(...);
//设置密码
ds.setPassword(...);
//设置连接池的初始连接数
ds.setInitialSize(5);
//设置连接池最多可有多少个活动连接数
ds.setMaxActive(20);
//设置连接池中最少有2个空间的连接
ds.setMinIdle(2);
//通过数据库获取连接
Connection conn = ds.getConnnection();

数据库源和数据库连接不同,数据源无须创建多个,它是产生数据库连接的工厂,因此整个应用只需一个数据源即可。建议
在上面的程序中把ds设置为static成员变量,并且在应用开始时立即初始化数据源对象。
当数据库访问结束后,还是应该像以前一样关闭数据库连接,如下代码:
conn.close();//释放连接
但上面代码并没有关闭数据库的物理连接,它仅仅把数据库连接释放,归还给连接池,让其他客户端可以使用该连接。

 

 

 

抱歉!评论已关闭.