在Web系统中用连接池访问数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期5作者简介王丽辉(),女,吉林省九台市人,实验师,从事计算机教学与实验工作。
在Web 系统中用连接池访问数据库
王丽辉,王东来
(吉林农业科技学院信息工程学院,吉林132101)
摘 要:介绍了基于Java 的数据库访问机制,阐述了连接池的概念以及连接池的具体实现。对实际应用中出现的问题进行分析,提出了使用连接池技术的解决方案。分析了连接池的工作原理,并通过一个实例给出了连接池技术的实现方案。
关键词:Jav a ;连接池;JD BC
中图分类号:TP393 文献标识码:A
Using Connection Pool to Visit Databa se in Web System
WAN G Lihui ,WANG Donglai
(Jilin Agricu ltural Science and Techno lo gy Colleg e C ollege o f In formation Eng in eering ,Jilin 132101,Ch ina)
A bstract :In this paper ,introduced t he access mechani sm based Java and explained the c once ption and im ple 2mentation of c onnection pool.Put forw ard the s olutionson how to use connection pool technology a fter the problems in applications were analysed.Analysed the w orking principle and gave an implementations pr ogram by one exam ple.
K ey w or ds :Java ;connection pool ;JDBC
Java 是S UN 公司推出的一种面向对象的语言,它利用特有的虚拟机技术实现了平台的无关性,而这一特性又促使其成为一种开发W eb 应用系统的优秀语言。由于在网上处理的数据成倍增加,而且越来越复杂,迫使科学研究者和应用开发者必须考虑如何快速建立完善有效的新模型以及如何改进和优化一些传统模型。众所周知,在一个基于数据库的Web 系统中,建立数据库连接的操作是系统中代价最大的操作之一。很多时候,可能网站速度瓶颈就在于此。为此我们提出了在传统模型中引入连接池技术的方法,从而很好地解决了这个问题。连接池技术是通过重用一组连接对象,使所有用户之间共享一组已经打开的连接。我们提出的方法可以节省建立数据库连接的时间,提高访问数据库的速度。
1 Java 应用程序访问数据库基本原理
Java 语言的跨平台性、安全性以及可移植性等特性使其成为开发数据库的一种优秀语言[1]。JD BC (Java DataBase C onnectivity )是Java 程序连接和存取数据库的应用程序接口(API ),此接口是Java 核心API 的一部分。JD BC 向应用程序开发者提供了独立于数据库的统一的API 。JD BC 是由一组驱动程序实现的Java 接口,驱动程序负责从标准JD BC 调用向支持的数据库所需要的具体调用转变。除了向开发都提供统一的独立于D BMS 之外的框架,JD BC 还提供了让开发者保持数据库厂家提供的特定功能的办法。驱动程序管理器API (对程序员是透明的)与实际连接到数据库的各个第三方驱动程序进行通信,并且返回查询的信息,或者执行由查询规定的操作。(1)建立数据库连接;(2)利用SQ L 语句对数据进行操作;(3)断开数据库连接在基于数据库的W eb 系统中,在某一较短的时间段内,只有少数Web 请求时,传统模式还能很好的工作,但随着请求数不断增加,系统的开销越来越大,响应W eb 、请求的速度越来越慢,直到无法响应W eb 请求。造成这种结果的原因是由于传统模式存在下面的一些缺陷:(1)一次W eb 请求都需要建立一次数据库连接。每建立一次数据
5
:2009-0-10
:1972-11
库连接就需要花费0.05~1s 的时间,还要花费很大的系统开销;(2)不能控制被创建的连接对象数,系统资源被毫无顾忌的开销,最后导致系统内存溢出,服务器崩溃;(3)必须管理每一个连接,确保它们能被正确关闭。如果出现程序异常而导致某些连接未能关闭,将导致数据库系统中的内存泄露,最终将不得不重启数据库
。
2 在传统模式中引入连接池
2.1 连接池的基本概念
连接池(C onnection Pool )顾名思义,就是众多连接对象的“缓冲存储池”,也即是连接对象的集合体。连接池内部提供一种管理机制,能控制连接池内部连接对象的个数,对应用程序提供获取和释放连接的接口。完善的连接池,还能够控制连接对象的生存周期[2]。2.2 工作机制
2.2.1 连接池的工作 主要由3部分组成:(1)连接池的建立;(2)连接池中连接的使用管理;(3)连接池的关闭。连接池的工作原理。见图2。2.2.2 建立连接池 建立连接池时,连接池应从数据库中一次性获取预设数目的连接对象。这些连接对象作为系统可分配的自由连接,可在以后
使用时直接从连接池获取,这样可避免随意建立、释放连接所带来的开销
。
2.2.3 管理连接池 管理连接池是连接池机制的核心。当用户需访问数据库时,不是直接同数据库建立连接,而是向连接池申请一个连接,如果连接池中有空闲连接,则把空闲连接分配给用户;否则,要检查连接个数是否达到了连接上限。如果没有达到上限,可以建立一个新连接分配给用户;
如果已经达到了上限,则需要等待,直到有别的用户释放连接时再把释放后的连接分配给该用户。由此可见连接池能保证数据库连接的有效复用,避免频繁地建立、释放连接所带来的系统资源开销。
2.2.4 关闭连接池 当应用程序退出时,应关闭连接池,此时应把在连接池建立时向数据库申请的连接对象统一归还给数据库,即关闭所有数据库连接。当传统模式中引入连接池后,访问数据库的模式会有改变。
3 连接池的实现
3.1 连接池的模型
通过C onnection P ool 类来实现连接池模型,表1是C onnec2tion Pool 实现的连接池模型。
表1 C onnection P ool 实现的连接池模型
C onnectionP ool
clients :int
ns tance :C onn ection Po ol freeConn ections :V ector driver :D riv er
m ax:in t
连接池的唯一实例表示已创建的连接对象个数用来“存储”连接对象表示JD BC 的驱动程序
表示允许创建的连接对象的最大个数
g etIns tance :C onnecti on P ool in it ()
g etC onnecti on :C onnecti on freeConn ection :v oid 取出唯一连接池实例连接池初始化
从连接池中取出一个连接对象把连接对象放到连接池
释放连接池和其中的所有连接对象
6
release :v oid
11