毕业设计论文基于JAVA的数据库连接池的开发.doc
《毕业设计论文基于JAVA的数据库连接池的开发.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于JAVA的数据库连接池的开发.doc(22页珍藏版)》请在三一办公上搜索。
1、基于JAVA的数据库连接池的开发摘 要在基于JDBC的数据库实际应用开发中,对数据库连接的管理是一个重点也是一个难点,频繁对数据库的连接与关闭操作、多客户对数据库的并发访问,一定程度上决定了WEB系统的响应以及应用性能。使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在数据库连接池方面的使用现状后,总结一了些数据库连接池开发程序中容易忽略的问题。并在学习掌握了实现连接池的关键技术后给出了一个较为高效的连接池管理策略,在这种策略思想的指导下实际开
2、发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相对高效和容易,从实际上论证了这种设计方案的可行性。关键词:连接池;数据库;JDBC;并发访问Research and realization of the Database Connection Pool AbstractIn the practically application development of database based on JDBC, the management of database connection is a key point and also a difficulty. The resp
3、onse and performance of the WEB system are depended on frequently connecting, closing and multi-user accessing in a certain extent. Using the Database Connection Pool can provide management and maintenance for connections of the database. The upper applications may access the database recourse via t
4、he Database Connection Pool, in order to upgrade system performance and fully utilize the system recourse. This article summarizes some issues which are easily ignored in the application development of the Database Connection Pool by the way of introducing and analyzing the basal working principles
5、of the Database Connection Pool ,comprehending the using actuality of the Database Connection Pool on the popular WEB servers. Besides, I established a comparatively highly effective policy of the Connection Pool management after having learned and comprehended key technique of implementing the Conn
6、ectivity Pool, and actually had developed a Database Connection Pool module under the guidance of that policy, causing the access of system resource by the upper applications via current Connectivity Pool becoming relatively highly effective and easy, demonstrated the feasibility of this design proj
7、ect in practice.Key words: Database Connection Pool; Database; JDBC; Concurrence access 591论文网 www.591LW.com目 录论文总页数:22页1引言11.1课题背景11.2连接池的主要作用11.3目前流行的web服务器数据库连接池方面使用现状11.3.1DHCP介绍21.3.2Poolman介绍21.3.3C3P0介绍21.3.4其他连接池(自写连接池)22相关理论基础32.1数据库概述32.2数据库连接池的基本原理32.3连接池中的关键技术42.3.1连接池的分配与释放42.3.2连接池的维护5
8、3系统总体设计思想及方案53.1连接池中的关键类设计63.2连接池中的管理机制73.3实现一个连接池的其他问题83.3.1事务处理83.3.2封装93.3.3并发93.3.4连接池的关闭94具体的设计流程和实现104.1连接池的建立104.2连接池的管理124.3连接池的关闭144.4连接池的测试155系统测试问题总结155.1连接池的泄露问题155.1.1产生现象155.1.2解决办法165.2多数据库服务器问题17结 论19参考文献20致 谢21声 明22 1 引言1.1 课题背景随着信息技术的高速发展与广泛应用,数据库技术在信息技术领域中的位置越来越重要。传统的开发模式是:首先在主程序(
9、如Servlet、Beans)中建立数据库连接;然后进行SQL操作,对数据库中的对象进行查询、修改和删除等;最后断开数据库连接。使用这种开发模式,对于一个简单的数据库应用,由于数据库的访问不是很频繁,只需要在访问数据库时创建一个连接,用完后就关闭它,这样做不会明显增大系统的开销。但是对于一个复杂的数据库应用,情况就完全不同了,尤其是大型电子商务网站,同时可能有几百人甚至几千人在线。在这种情况下,用户操作频繁的建立、关闭数据库,会极大的降低系统的性能,增大系统的开销,迫使网站的响应速度下降,严重的甚至会造成服务器的崩溃。针对这些突出问题,采用运行速度更快、数据库访问效率更高的数据库连接池技术,以
10、提高系统的运行效率将是至关重要的,因此本文提出了一种基于数据库连接池技术的有效解决方法。以加强对数据库操作的性能,改善资源使用率,提高应用程序的响应能力。1.2 连接池的主要作用一个应用系统,同时有几百人甚至几千人频繁的进行数据库连接操作势必占用很多的系统资源,严重的甚至会造成服务器的崩溃。对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。还有,如果不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,连接过多也可能导致内存泄漏,服务器崩溃。针对这些突出问题,因此提出了一种基于数据库连接池技术的有效解决方法。
11、简而言之,数据库连接池主要作用是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。1.3 目前流行的web服务器数据库连接池方面使用现状由于JDBC的API中没有提供连接池的方法。一些大型的WEB应用服务器如WebLogic、WebSphere等都自带有连接池。不同的是,tomcat并没有自已开发连接池,而是集成的apache的另外一个开源项目DBCP连接池。BEA的WebLogic自身带有一个连接池,这个连接池无法与WebLogic分离,但是也必须有其第
12、三方的专用类方法支持连接池的用法,而不需要用户再去写一个连接池。以下是一些第三方连接池:1.3.1 DHCP介绍DBCP应Apache的Jakarta组织开发,是目前使用较为广泛的一个连接池,一是因为tomcat自带的就是这个连接池,二是因为开源免费。由于其使用的稳定性不是很好,著名的开源项目hibernate不再提供对它的支持。DBCP部分参数说明如下:dataSource:要连接的 dataSource (通常我们不会定义在 server.xml)。defaultAutoCommit:对于事务是否 autoCommit, 默认值为 true。defaultReadOnly:对于数据库是否只
13、能读取, 默认值为 false。driverClassName:连接数据库所用的 JDBC Driver Class。maxActive:最大连接数据库连接数,设 0 为没有限制。maxIdle:最大等待连接中的数量,设 0 为没有限制。maxWait:最大等待秒数, 单位为 ms, 超过时间会出错误信息。password:登陆数据库所用的密码。url:连接数据库的 URL。username:登陆数据库所用的帐号。validationQuery:验证连接是否成功, SQL SELECT 指令至少要返回一行。removeAbandoned:是否自我中断, 默认是 false。removeAban
14、donedTimeout:几秒后会自我中断, removeAbandoned 必须为 true。logAbandoned:是否记录中断事件, 默认为 false。1.3.2 Poolman介绍Poolman连接池前几年应用较广泛,现在应用相对较少。配置步骤主要是先在/项目名称/web-Inf/下加入一个jar包,然后配置一个xml文件,文件属性类似于DBCP,最后在程序中写出调用该连接池的方法。1.3.3 C3P0介绍C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现JDBC3.0和JDBC2.0扩展规范说明的Connection 和Statem
15、ent 池的DataSource 对象。自从hibernate自带了c3p0以后,c3p0很快就受到了广大程序员的认可,其性能上来说比DBCP要好的多。1.3.4 其他连接池(自写连接池)有些程序员喜欢自己写连接池,建议不用这样的方法,因为连接池的管理较为复杂,自己写常出现各种各样的错误,推荐使用有成熟技术的连接池,同时也方便系统的移植。2 相关理论基础2.1 数据库概述数据库,顾名思义,是存入数据的仓库。只不过这个仓库是在计算机存储设备上的,而且数据是按一定格式存放的。 当人们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可现在
16、随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。 要是下定义的话,就应该是:指长期储存在计算机内的、有组织的、可共享的数据集合。数据库包含关系数据库、面向对象数据库及新兴的XML数据库等多种,目前应用最广泛的是关系数据库,若在关系数据库基础上提供部分面向对象数据库功能的对象关系数据库。在数据库技术的早期还曾经流行过层次数据库与网状数据库,但这两类数据库目前已经极少使用。2.2 数据库连接池的基本原理建立“缓冲存储池”,是数据库连接池的基本设计思想。这种技术类似于CPU 中的Cache 技术,将预先设定好的数据库连接放入该缓冲池
17、中,当要建立数据库连接操作时,便从池中取出一个连接,使用完毕后再将其放回。这样就达到了连接复用的目的,应用程序重复使用一个数据库连接,在多层结构的应用程序中通过连接池技术可以使系统的性能明显得到提到。最为关键的是,该方法避免了对数据库连接的频繁建立、关闭,减小了系统开销,提高了响应速度。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量使用情况,为系统开发测试及性能调整提供依据。数据库连接池属于应用程序对底层的调用,用户并发访问应用程序时会提交访问请求,然后通过线程来处理这些请求,并向连接池申请一个对数据库操作的连接,操
18、作完毕后将连接释放。应用程序调用连接池连接的基本工作原理如下图所示:图1 连接池的调用基于以上原理,连接池的建立会在后面章节中做具体描述。为了方便理解,连接池以JSP页面形式将最大连接数的设置、连接池的使用、超时等待、连接池的关闭等情况展示出来,给用户一个更为直观的感受。连接的调用原理如下图所示:取得连接释放连接图2 建立数据库连接从图中可以看出,当程序(JSP、Servlet、JavaBean)中需要数据库连接时,只需从内存中取出一个来,并将这个取得的连接加入Vector中,而不用新建连接;使用完毕后放回内存中,并将Vector中的已用连接删除。2.3 连接池中的关键技术2.3.1 连接池的
19、分配与释放连接池的分配与释放技术对系统的性能有很大的影响。合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。对于连接的管理。每当用户请求一个连接时,系统首先检查连接池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,若不可用就把这个连接删掉,重新检测是否还有连接);如果检查到当前所开连接池没有达到连接池所允许的最大连接数(maxConn),就新建一个连接,如果已经达到,就等待一定的时间(timeout)。如果在等待的时间内有连接被释放出来就可以把这个连接分配给等
20、待的用户,如果等待时间超过预定时间timeout,则返回空值(null)。系统对已经分配出去正在使用的连接只做计数。2.3.2 连接池的维护数据库连接池到底要放置多少个连接,这是个配置策略。为了使系统的性能达到最佳状态,连接池中的连接数的设定显得尤为重要,我们采用设置最大连接数(maxConn)和最小连接数(minConn)的方式来解决这一问题。所谓最大连接数,即连接池中允许连接的最大数目,然后,最大连接数的设定要通过具体的应用需求来给出一个连接池可以承受的最大连接数目的最佳点。如果应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中,等待其他连接的释放后再来调用一空闲
21、连接(freeConn),这样可能会影响部分对数据库的操作。所谓最小连接数,即应用启动前,已经预先创建好的连接数。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。如果最小连接数过大,那么系统启动过程将变慢,若应用程序对数据库的访问量不大,过多的数据库连接资源将被浪费,但是系统启动后响应更快;如果过小系统启动将加快,但是最初使用的用户会因为连接池中没有足够的连接而会发送一个新的数据库连接请求,将不可避免的延缓执行速度。3 系统总体设计思想及方案数据库连接池技术的设计思想非常简单,先将数据库连接作为对象存储在一个Vector对象中,Vector 类可以实现可增长的对象“数
22、组”。Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。这里主要包含使用的连接(nowConnections)和未使用的连接(freeConnections)两个Vector类创建的对象,创建Vector对象的方法如下:public DBConnectionPool(Vector connections) freeConnections = new Vector(); nowConnections = new Vector();当外部程序向数据库申请建立连接后,系统会调用nowConnections.add( )方法,此时已用连接计数器加1,相应的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 JAVA 数据库连接 开发
链接地址:https://www.31ppt.com/p-4864558.html