`
xupo
  • 浏览: 214853 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库连接池的JAVA实现(第一篇)

阅读更多

一个完整的连接池应用包括三个部分: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; {
   Connection con = createConnection();
   if (con!=null) addConnection(con);
  } } }

// 向连接池对象中添加数据库连接

private static void addConnection(Connection con) {
 if (pool=null||pool1=null) {
  pool=new Vector(size);
  pool1=new Vector(size); }
 pool.addElement(con);
 pool1.addElement("false"); }

// 获取数据库连接

public static synchronized Connection getConn() 
throws Exception {
 Connection conn = null;
 try { if (driver = null)
  FastInitPool();
  // 获得一个可用的(空闲的)连接
 .for (int i = 0; i < pool.size(); i++) {
  conn = (Connection)pool.elementAt(i);
  if (pool1.elementAt(i)=="false") {
   pool1.set(i,"true");
   //System.out.println("从连接池中获取第"+(i+1)+"个空闲连接");
   return conn;
  }
 }
 //如果没有可用连接,且已有连接数小于最大连接数限制,则创建并增加一个新连接到连接池
 conn = createConnection();
 pool.addElement(conn);
 pool1.addElement("true");
 // System.out.println(" 所有连接都在使用,在连接池中再创建一个新连接");
}

catch (Exception e) {
 System.err.println(e.getMessage());
 throw new Exception(e.getMessage());
}
return conn; //返回一个有效的新连接
}

public Connection getConnection(String strDriver, String strUrl, String strUserName, String strPassWord) 
throws SQLException{
 try{ Class.forName(strDriver);
  conn = DriverManager.getConnection(strUrl, strUserName, strPassWord); }
 return conn; }

 当前Web应用程序广泛采用B/S结构,其并发性决定了多用户同时访问数据库的问题。本文阐述的基于JDBC的数据库连接池技术已成功应用于基于Web的高职教学系统开发中,并建立了数据库连接池实例来说明和证实连接池的访问方法。只有充分运用连接池访问技术,才能提高数据库的访问效率,改善Web应用,从而减少系统开销,大大提高整个Web应用系统的运行效率。

分享到:
评论

相关推荐

    轻量级java数据库连接池

    本项目提供了一个轻量级的Java数据库连接池实现,旨在简化开发过程,提高应用性能并降低资源消耗。下面将详细介绍这个轻量级Java数据库连接池的设计理念、工作原理以及如何使用。 1. **设计理念** 轻量级数据库...

    数据库连接池java和.net

    在Java中,常用的数据库连接池实现有Apache的DBCP、C3P0、HikariCP以及Tomcat JDBC Connection Pool等。例如,HikariCP以其高效和轻量级而知名,它提供了优秀的性能和健壮性,通过最小化空闲连接池的大小来降低内存...

    java 数据库连接池的实现代码

    10. **第三方连接池库**:Java社区有许多成熟的数据库连接池实现,如C3P0、HikariCP、Apache DBCP和Druid等,它们提供了更丰富的功能和更好的性能,是实际项目中更常见的选择。 总的来说,数据库连接池通过有效管理...

    单实例模式数据库连接池

    ### 单实例模式数据库连接池 #### 概述 单实例模式数据库连接池是一种软件设计模式,主要用于提高数据库访问效率并降低系统资源消耗。在该模式下,整个应用程序仅创建一个数据库连接池实例,所有数据库操作共享这...

    数据库连接池(JAVA)

    1. DBConnectionManager.java:这个文件很可能是你实现的数据库连接池类。在其中,可能会包含创建、获取、释放数据库连接的方法,以及单例模式的实现。单例模式通常会包含一个私有的构造函数,一个静态方法用于获取...

    数据库连接池在Oracle数据库中的实现.docx

    数据库连接池在Oracle数据库中的实现是一项关键的技术优化策略,它主要解决了基于JDBC(Java Database Connectivity)的应用程序在处理数据库连接时的效率问题。在传统的数据库应用中,每次请求都需要建立一个新的...

    DBCP数据库连接池jar包.zip

    总的来说,DBCP2是一个适用于学习和小型项目的数据库连接池实现,对于初学者来说,通过这个压缩包可以了解数据库连接池的基本工作原理和使用方式,对于开发者而言,它可以提供基本的数据库连接管理功能,但可能需要...

    Java实现数据库连接池简易教程

    Java实现数据库连接池简易教程主要涉及了如何在Java应用程序中创建并管理数据库连接池。数据库连接池是一种优化数据库操作的技术,通过复用已存在的数据库连接,减少频繁创建和关闭连接带来的性能开销。本文将介绍一...

    SQL Server数据库连接池及jdbc调用

    此外,还有第三方的数据库连接池实现,如C3P0、Apache DBCP、HikariCP等,它们同样适用于SQL Server,并且提供更多的定制化选项和性能优化。 在Java环境中,JDBC是与各种数据库交互的标准接口。使用JDBC调用SQL ...

    数据库连接池以及hibernate对各种连接池的整合

    在Java开发中,数据库连接池是一种重要的资源管理工具,它允许开发者高效地管理和复用数据库连接,从而提高系统的性能和稳定性。数据库连接池的基本原理是预先创建一定数量的数据库连接,当应用程序需要访问数据库时...

    数据库连接池的原理机制学习

    数据库连接池是一种用于管理和重用数据库连接的技术。它通过预创建并维护一定数量的数据库连接,使得应用程序能够快速获取并释放这些连接,从而提高了整体的效率和性能。 **资源池(Resource Pool)模式**:这一设计...

    ConnectionPool 基于java实现数据库连接池

    在Java中,数据库连接池通常通过第三方库如Apache的DBCP、C3P0或HikariCP来实现。然而,为了学习目的,我们可以自己模拟一个简单的连接池。这个项目的核心概念包括: 1. **连接创建与管理**:在应用启动时,连接池...

    一种简单JDBC数据库连接池的实现.rar_connection pool jdbc_site:www.pudn.com_数据库

    本文将详细讨论如何实现一个简单的JDBC(Java Database Connectivity)数据库连接池,以及相关的技术要点。 首先,我们需要了解JDBC的基本概念。JDBC是Java平台的标准API,用于与各种类型的数据库进行交互。通过...

    Java jdbc数据库连接池总结.doc

    Java JDBC数据库连接池是Java应用程序与数据库交互的重要优化手段,旨在提高数据库访问效率和资源利用率。在传统的JDBC操作中,每次请求都需要建立和关闭数据库连接,这不仅耗时,还可能导致系统资源的过度消耗,...

    简单建立数据库连接池及JDK自带日志使用(真正)

    数据库连接池是现代Web...通过这种方式,我们可以构建一个具备日志记录功能且使用了数据库连接池的简单Java应用。当然,对于生产环境,你可能需要考虑使用更强大的日志库和连接池实现,以满足复杂的需求和高并发场景。

    R2高性能数据库连接池v1.5源码

    多池调用方式为R2Pool pool1=R2PoolUtil.getPool(new File("第一个连接池的配置文件.properties")); Connnection conn1 = pool1.getConnection(); R2Pool pool2=R2PoolUtil.getPool(new File("第二个连接池的配置...

    Java 连接池实现

    Java连接池是应用程序管理数据库连接的一种机制,它有效地管理和复用数据库连接,避免了频繁创建和销毁连接导致的性能开销。在Java中,我们可以通过手动实现连接池来理解其工作原理,这通常涉及到以下几个核心概念和...

    java实现连接池

    Apache DBCP是Apache的一个开源项目,提供了一个基础的数据库连接池实现。它依赖于Jakarta Pool库来管理连接。使用DBCP,你需要配置一个Properties文件,设置如数据库URL、用户名、密码、最大连接数等参数。然后在...

Global site tag (gtag.js) - Google Analytics