连接池技术

来源:互联网 发布:python 列表生成式 编辑:程序博客网 时间:2024/04/29 09:05

这一问题,引入了连接池的概念。所谓连接池,就是预先建立好一定数量的数据库连接,模拟存放在一个连接池中,由连接池负责对这些数据库连接进行管理,这样,当需要访问数据库时,就可以通过已经建立好的连接访问数据库了,从而免去了每次在访问数据库之前建立数据库连接的开销。

连接池还解决了数据库连接数量限制的问题。由于数据库能够承受的连接数量是有限的,当达到一定程度时,数据库的性能就会下降,甚至崩溃,而池化管理机制,通过有效的使用和调度这些连接池中的连接,而解决了这个问题(在这里不讨论连接池对连接数量限制的问题)。

数据库连接池的具体实施办法如下所述。

(1)预先创建一定数量的连接,存放在连接池中。

(2)当程序请求一个连接时,连接池是为该请求分配一个空闲连接,而不是去重新建立一个连接;当程序使用完连接后,该连接将重新回到连接池中,而不是直接将连接释放。

(3)当连接池中的空闲连接数量低于下限时,连接池将根据管理机制追加创建一定数量的连接;当空闲连接数量高于上限时,连接池将释放一定数量的连接。

注意:

在每次用完Connection后,要及时调用Connection对象的close()或dispose()方法显式关闭连接,以便连接可以及时返回到连接池中,非显式关闭的连接可能不会添加或返回到池中!

连接池的优点如下。

(1)创建一个新的数据库连接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是一个很耗时的过程,而采用数据库连接池后,数据库连接请求则可以直接通过连接池满足,而不需要为该请求重新连接、认证到数据库服务器,从而节省了时间。

(2)提高了数据库连接的重复使用率。

(3)解决了数据库对连接数量的限制。
连接池的缺点如下。

(1)连接池中可能存在多个与数据库保持连接但未被使用的连接,在一定程度上浪费了资源。

(2)要求开发人员和使用者准确估算系统需要提供的最大数据库连接的数量。

获得JNDI的名称实现对数据库的连接
JDBC 2.0提供了javax.sql.DataSource接口,负责与数据库建立连接,在应用时不需要编写连接数据库代码,可以直接从数据源中获得数据库连接。在Dataource中预先建立了多个数据库连接,这些数据库连接保存在数据库连接池中,当程序访问数据库时,只需从连接池中取出空闲的连接,访问结束后,再将连接归还给连接池。DataSource对象由容器(例如Tomcat)提供,不能通过创建实例的方法来获得DataSource对象,需要利用Java的JNDI(Java Nameing and Directory Interface,Java命名和目录接口)来获得DataSource对象的引用。JNDI是一种将对象和名字绑定的技术,对象工厂负责生产对象,并将其与唯一的名字绑定,在程序中可以通过名字来获得对象的引用。
 

原创粉丝点击