在JAVA中实现JDBC数据库连接池

【转自e良师益友网】Java程序员都很羡慕Windows ADO ,只需要new Connection 就可以直接从数据库连接池中返回Connection。并且 ADO Connection 是线程安全的,多个线程可以共用一个Connection,所以ASP程序一般都把getConnection 放在 Global.asa 文件中,在 IIS 启动时建立数据库连接。ADO 的Connection 和Result 都有很好的缓冲,并且很容易使用。推荐学习尚硅谷JDBC视频教程

其实我们可以自己写一个JDBC数据库连接池。

写JDBC connection pool 的注意事项有:

1、有一个简单的函数从连接池中得到一个 Connection。

2、close 函数必须将connection 放回 数据库连接池。

3、当数据库连接池中没有空闲的connection,数据库连接池必须能够自动增加connection 个数。

4、当数据库连接池中的connection 个数在某一个特别的时间变得很大,但是以后很长时间只用其中一小部分,应该可以自动将多余的connection 关闭掉。

5、如果可能,应该提供debug 信息报告没有关闭的new Connection 。

如果要new Connection 就可以直接从数据库连接池中返回Connection, 可以这样写( Mediator pattern ) (以下代码中使用了中文全角空格):

看来并不难。不过不建议这种写法,因为应该尽量避免使用Java Interface, 关于Java Interface 的缺点我另外再写文章讨论。大家关注的是Connection Pool 的实现方法。下面给出一种实现方法。

使用:

运行测试程序后打印JDBC数据库连接池中Connection状态,以及正在使用的没有关闭Connection信息。e良师益友网还有更多编程语言教程知识供你学习。

时间: 2024-10-21 07:36:35

在JAVA中实现JDBC数据库连接池的相关文章

在Java中开源的数据库连接池

在Java中开源的数据库连接池有以下几种 : 1, C3P0 C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象. https://github.com/swaldman/c3p0 2,Proxool 这是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装.可以非常简单的移植到现存的代码中.完全可配

Java中Semaphore(信号量) 数据库连接池

计数信号量用来控制同时访问某个特定资源的操作数或同时执行某个指定操作的数量 A counting semaphore.Conceptually, a semaphore maintains a set of permits. Each acquire blocks if necessary until a permit is available, and then takes it. Each release adds a permit, potentially releasing a bloc

Java之中JDBC数据库连接池实现方法

作为一名初级Java程序员都很羡慕Windows ADO ,只需要new Connection 就可以直接从数据库连接池中返回Connection.并且 ADO Connection 是线程安全的,多个线程可以共用一个Connection,所以ASP程序一般都把getConnection 放在 Global.asa 文件中,在 IIS 启动时建立数据库连接.ADO 的Connection 和Result 都有很好的缓冲,并且很容易使用. 其实我们可以自己写一个JDBC数据库连接池. 写JDBC

JAVA JDBC 数据库连接池

1.1 JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接 进行sql操作 断开数据库连接 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s-1s的时间).需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接.这样的方式将会消耗大量的资

2018-07-24期 Java动态代理实现数据库连接池

package cn.sjq.proxy.ds.pool; import java.io.PrintWriter; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLExcep

java中使用JDBC连接数据库的步骤

java中使用JDBC连接数据库的步骤? 采纳率:46%6级2015.06.30 1.注册驱动Class.forname("com.mysql.jdbc.Driver");//这是连接mysql数据库的驱动2.获取数据库连接java.sql.Connection conn=java.sql.DriverManager.getConnection(); 3.获取表达式java.sql.Statement stmt=conn.createStatement("jdbc:mysql

EAS中怎么实现数据库连接池?0514

EAS中怎么实现数据库连接池? EAS二次开发时,有些时候需要直连非业务系统的数据库,这个时候使用JDBC+连接池技术是可选之一(webservice不讨论). 一.EAS.开源 1.开源组件中有个比较有名的DBCP,2.国内比较有名的阿里的Druid 本文主要讲解DBCP.主要原因是EAS的连接池实现就在在dbcp基础上构建的,二次开发直接使用dbcp可省去很多事. 二.实现原理 DBCP 主要通过BasicDataSource配置相关数据源信息,比如数据库URL.驱动.用户名.密码.连接池初

Java中的字符串常量池

最近做到一个题目: 问题:String str = new String("abc"),"abc"在内存中是怎么分配的?    答案是:堆,字符串常量区. 题目考查的为Java中的字符串常量池和JVM运行时数据区的相关概念."abc"为字面量对象,其存储在堆内存中.而字符串常量池则存储的是字符串对象的一个引用. Java中的字符串常量池 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid&qu

转载:Java中的字符串常量池详细介绍

引用自:http://blog.csdn.net/langhong8/article/details/50938041 这篇文章主要介绍了Java中的字符串常量池详细介绍,JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池,需要的朋友可以参考下 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new Stri