CSDN博客

img sirix

Java数据库连接池技术

发表于2004/6/16 15:21:00  3042人阅读

在执行数据库SQL语句时,我们先要进行数据连接;而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术。它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池,当需要用到数据连接时,就从中取出一个连接,完成某些SQL操作后,系统自动回收,以供其它用户(或进程)调用。

 

我们知道,java标准的java.sql.Connection表示一个数据连接。我们封装了这个类,形成自己的数据库连接池。为了说明方便,这里用实际的类来显示:

DBConnectionPool  真正的数据连接池

DBConnectionManager  对多个池进行管理

 

 之间的关系如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实际执行过程:

1)        新建一个DBConnectionManager类的实例。

2)        然后调用DBConnectionManager. CreatePool()创建一个连接池,并把这个连接池加入到poolsHasthTable中。(这种过程可执行多次,对应不同的数据连接,可能是sql2k的,也可能是oracle的,但生成的DBConnectionPool都要放到pools中进行统一管理,用并用一个名字与相应的DBConnectionPool对应起来)

3)        当需要数据连接时,首先得到一个DBConnectionPool,然后从DBConnectionPool中看有没有空闲的连接,如果有,则使用。如果没有,显没过最大连接数,则创建一个Connection连接,并返回这上连接。

4)        如果某个连接使用完毕,则调用DBConnectionManager.freeConnection(String name, Connection con),它又调用DBConnectionPool. freeConnection(Connection con),此时,连接并不真正释放,而是把这个暂时不用的Connection放到DBConnectionPoolfreeConnections数组中,同时,通知其它正在等待连接的线程。这样,以后要用时,就不用再新建Connection

0 0

相关博文

我的热门文章

img
取 消
img