快速业务通道

基于JDBC的数据库连接池技术研究与设计 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
对于数据库的访问都是 通过查找该注册表,使用已经分配的连接来完成的。当事务结束时,从注册表中 删除相应表项。

2.2 封装

从上面的论述可以看出,普通的数据库方法和事务方法对于连接的使用(分 配、释放)是不同的,为了便于使用,对外提供一致的操作接口,我们对连接进 行了封装:普通连接和事务连接,并利用了Java中的强大的面向对象特性:多态 。普通连接和事务连接均实现了一个DbConnection接口,对于接口中定义的方法 ,分别根据自己的特点作了不同的实现,这样在对于连接的处理上就非常的一致 了。

2.3 并发

为了使连接管理服务有更大的通用性,我们必须要考虑到多线程环境,即并 发问题。在一个多线程的环境下,必须要保证连接管理自身数据的一致性和连接 内部数据的一致性,在这方面Java提供很好的支持(synchronized关键字),这 样就很容易使连接管理成为线程安全的。

2.4 多数据库服务器

在实际应用中,应用程序常常需要访问多个不同的数据库。如何通过同一个 连接池访问不同的数据库,是应用程序需要解决的一个核心问题。下面介绍一种 解决的途径:

首先,定义一个数据库连接池参数的类,定义了数据库的JDBC驱动程序类名 ,连接的URL以及用户名口令等等一些信息,该类是用于初始化连接池的参数:

public class ConnectionParam implements Serializable{   //各初始化参数的定义 }

其次是连接池的工厂类ConnectionFactory,通过该类将一个连接池对象与一 个名称对应起来,使用者通过该名称就可以获取指定的连接池对象,实现的主要 代码如下:

public class ConnectionFactory{   static Hashtable connectionPools = //用来保存数据源名和连接池对象 的关系   public static DataSource lookup(String dataSourceName) throws   NameNotFoundException{    //查找名字为dataSourceName的数据源   }   public static DataSource bind(String name, ConnectionParam param)   throws Exception   //将名字name与使用param初始化的连接池对象绑定 } public static void unbind(String name) throws NameNotFound Exception{   //将与名字name绑定的连接池对象删除 }

基于JDBC的数据库连接池技术研究与设计(3)

时间:2010-12-15 计算机与信息技术 孙鑫鸽 陈刚 孙小玲

连接池应用的实现

一个完整的连接池应用包括三个部分:DBConnectionPool类,负责从连接池 获取(或创建)连接、将连接返回给连接池、系统关闭时关闭所有连接释放所有资 源;DBConnectionManager类,负责装载和注册JDBC驱动、根据属性文件中定义 的属性创建DBConnectionPool、跟踪应用程序对连接池的引用等;应用程序对连 接池的使用。

本文实现的数据库连接池包括一个管理类DBConnectionManager,负责提供与 多个连接池对象(DBConnectionPool类)之间的接口。每一个连接池对象管理一组 封装过的JDBC连接对象Conn,封装过的JDBC连接对象Conn可以被任意数量的 Model层的组件共享。

类Conn 的设计很简单,如下所示:

Class Conn {   Private java. sgl .Connection con; //数据库连接对象   Public Boolean inUse ; //是否被使用   Public long lastAccess; //最近一次释放该连接的时间   Public int useCount; // 被使用次数 }

下面是实现连接池的主要代码:

// 初始化数据库连接池 public static synchronized void FastInitPool() throws Exception {   try { Class.forName(driver);    for (int i=0; i<size; i++) {     Connection con = createConnection();     if (con!=null) addConnection(con);    } } } // 向连接池对象中添加数据库连接 private static void addConnection(Connection con) {  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号