毕业设计论文-基于java的数据库连接池的开发内容摘要:
nt 池的 DataSource 对象。 自从 hibernate 自带了 c3p0 以后, c3p0 很快就受到了广大程序员的认可,其性能上来说比 DBCP 要好的多。 其他连接池(自写连接池) 有些程序员喜欢自己写连接池,建议不用这样的方法,因为连接池的管理 第 3 页 共 22 页 较为复杂,自 己写常出现各种各样的错误,推荐 使用有 成熟技术的连接池,同时也方便系统的移植。 2 相关理论基础 数据库概述 数据库,顾名思义,是存入数据的仓库。 只不过这个仓库是在计算机存储设备上的,而且数据是按一定格式存放的。 当人们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。 当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。 要是下定义的话,就应该是:指长期储存在计算机内的、有组织的、 可共享的数据集合。 数据库包含关系数据库、面向对象数据库及新兴的 XML 数据库等多种,目前应用最广泛的是关系数据库,若在关系数据库基础上提供部分面向对象数据库功能的对象关系数据库。 在数据库技术的早期还曾经流行过层次数据库与网状数据库,但这两类数据库目前已经极少使用。 数据库连接池的基本原理 建立“缓冲存储池”,是数据库连接池的基本设计思想。 这种技术类似于CPU 中的 Cache 技术,将预先设定好的数据库连接放入该缓冲池中,当要建立数据库连接操作时,便从池中取出一个连接,使用完毕后再将其放回。 这样就达到了连接复 用的目 的,应用程序重复使用一个数据库连接, 在多层结构的应用程序中通过连接池技术可以使系统的性能明显得到提到。 最为关键的是,该方法避免了对数据库连接的频繁建立、关闭,减小了系统开销,提高了响应速度。 我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。 更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。 数据库连接池属于应用程序对底层的调用 , 用户并发访问应用程序时会提交访问请求,然后通过 线程来处理这些请求,并向连接池申请一个对数据库操作的连接,操 作完毕后将连接释放。 应用程序调用 连接池 连接 的基本工作原理如下图所示: 第 4 页 共 22 页 图 1 连接池的调用 基于以上原理,连接池的建立会在后面章节中做具体描述。 为了方便理解,连接池 以 JSP 页面 形式 将 最大连接数的设置、 连接池的使用 、超时等待、连接池的关闭等 情况展示出来 ,给用户一个更为直观 的 感受。 连接的调用 原理 如下图所示: 图 2 建立数据库连接 从图中可以看出,当程序 ( JSP、 Servlet、 JavaBean) 中需要数据库连接时,只需从内存中取出一个来, 并将这个取得的连接加入 Vector 中, 而不用新建 连接 ;使用完毕 后放回内存中 ,并将 Vector 中的已用连接删除。 连接池中的关键技术 连接池的分配与释放 连接池的分配与释放 技术对系统的性能有很大的影响。 合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。 对于连接的管理。 每当用户请求一个连接时,系统首先检查连接池内有没有空闲连接。 如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,若不可用就把这个连接删掉,重新检测是否还有连接);如果检查到当前所开连接池没有达到 连接池所允许的最大连接数( maxConn) ,就新建一个连接,如果已经达到,就等待一定的时间( timeout)。 如果在等待的时间内有连接被释放取得连接 释放连接 第 5 页 共 22 页 出来就可以把这个连接分配给等待的用户,如果等待时间超过预定时间 timeout,则返回空值( null)。 系统对已经分配出去正在使用的连接只做计数。 连接池的维护 数据库连接池到底要放置多少个连接,这 是个配置策略。 为了使系统的性能达到最佳状态,连接池中的连接数的设定显得尤为重要,我们采用设置最大连接数( maxConn)和最小连接数( minConn)的方式来解决这一问题。 所谓 最大连接数,即连接池中允许连接的最大数目,然后,最大连接数的设定要通过具体的应用需求来给出一个连接池可以承受的最大连接数目的最佳点。 如果应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中,等待其他连接的释放后 再 来调用一空闲连接( freeConn),这样可能会影响部分对数据库的操作。 所谓最小连接数,即应用启动前,已经预先创建好的连接数。 无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。 如果最小连接数过大,那么系统启动过程将变慢,若应用程序对数据库的访问量不大, 过多的数据库连接资源将被浪费,但是系统启动后响应更快;如果过小系统启动将加快,但是最初使用的用户会因为连接池中没有足够的连接而会发送一个新的数据库连接请求,将不可避免的延缓执行速度。 3 系统总体设计思想及方案 数据库连接池技术的 设计 思想非常简单, 先 将数据库连接作为对象存储在一个 Vector 对象中 , Vector 类可以实现可增长的对象“数组”。 Vector 的大小可以根据需要增大或缩小, 以适应创建 Vector 后进行添加或移除项的操作。 这里 主要包含使用的连接( nowConnections )和未使用的连接( freeConnections) 两个 Vector 类创建的对象, 创建 Vector 对象的 方法如下: public DBConnectionPool(Vector connections) { freeConnections = new Vector()。 nowConnections = new Vector()。 } 当外部程序向 数据库 申请 建立连接 后, 系统 会 调用 ( )方法, 此时 已用连接计数器加 1,相应的,调用 ( )方法, 此时 空闲连接计数器减 1, 对于 这样的引用计数法 将 会在后面的章节中具体描述。 这样,不同的数据库访问请求就可以共享这些连接 ,并 通过复用这些已经建立的数据库连接, 克服 传统开发模式对数据库操作的 缺点。 另外,采用超时判断( timeout)机制,等待应用程序对连接的释放或者调用()方法主动释放连接, 能 极大地节省系统资源和 用户等待 第 6 页 共 22 页 时间。 而 实现连接池时,当应用程序调用 ( )试图去关闭数据库连接时,这时需要有一个通告给连接池实现模块,通告对当前 的数据库物理连接( DBConnectionPool 对象)进行重用。 为了使连接池实现模块能得到这种 “ 通告 ” ,连接池实现模块必须实现 ConnectionEventListener 接口,而且同时需要注册成为 DBConnectionPool 对象的监听者。 连接池实现模块接受到此通告后, 不是真正意义上的物理关闭,而是 将 DBConnectionPool 对象返回到池中进行重用。 从上面的介绍,可以看出连接池技术的关键就是其自身的管理机制,结合连接池工作的基本原理, 通过下图 展现出 一个连接池系统的总体设计框架。 图 3 总体设计框架 连接池中的关键类设计 一个连接池应用的设计, 需要几个关键部分作为支撑 , 其中最为重要的是DBConnectionPool 类和 DBConnectionManager 类,他们 对 连接 的建立、管理、释放起决定性作用。 大体作用列举如下: 建立数据库连接 GetConnection() CloseConnection() 第 7 页 共 22 页 一个 DBConnectionPool 类,该类负责从连接池获取 (或创建 )连接、将连接返回给连接池、 空闲连接的超时等待、 系统关闭时释放所有资源并关闭所有连接。 一个 DataSourceProviderServlet 类,该类负责通过上下文环境读取配置文件后装载 和注册 JDBC 驱动、数据库名等。 一个 DBConnectionManager 类,该类负责 按预先指定的最大连接池数连初始化 连接池 、创建 DBConnectionPool 对象 provider、当所有的连接客户退出后,关闭全部连接。 属性文件,该文件中包含了数据库驱动( DriverName)、数据库 URL、数据库表空间名( User)、表空间密码( Password)、连接池最大连接数( maxConnections)。 即为应用程序对连接池 中的连接 的调用 和释放 ,应用程序 退出后连接池的关闭。 将以上 5 个部分串连起来,即是本连接池的 简单 设计 流程。 首先 应用程序向 连接池 申请连接,就需要 通过 DBConnectionPool 类 、 DBConnectionManager类 对连接池 初始化, 并且还需要 DataSourceProviderServlet 类 的帮助 读取 文件 中的属性 , 加载和注册 JDBC 驱动 、数据库名 等, 连接池 才能 初始化成功。 之后通过 DBConnectionPool 类监视、管理 应用程序调用、释放的 数据库连接,并通过该类的 cp 对象将连接使用情况反映在 页面上。 连接池管理程序得到某 个连接,而其他线程就不会得到这个数据库连接了,此线程使用结束后,该线程将连接交还给连接池管理程序,以分配给其他等待连接的请求线程。 这里连接池充分利用 Java 的线程同步机理,使当前服务线程处于等待 状 态, 直至 有空 闲的 连接 出现。 最后 当应 用程。毕业设计论文-基于java的数据库连接池的开发
相关推荐
作后期喷施叶面肥料,可以延长冠层叶片功能期,促进光合产物向籽粒运输,增加实粒数,提高千粒重和品质,一般可增产 5%10%。 常用叶面肥有以下几种:1、叶面宝内含腐植酸和微量元素,可以增强麦予抗逆能力,补充微量元素。 于孕穗期和抽穗扬花后各喷施 1 次,每次每亩 710 毫升,加 2%尿素,对水 30千克喷雾。 一般可提高千粒重 12 克,增产 5%6%。 2
1、“树上海蛰皮”之称,它不仅富含营养,而且药用上与黑木耳相同,有特殊的保健功能,深受国内外市场青睐。 目前已在我县苏庄、马金、华埠、音坑、林山等地栽培,都获得较好的经济效益,该技术推广后迅速被菇农所接受,现将该技术要点介绍如下:一、生产季节安排根据毛木耳生产发育适宜温度和我县气候条件,可分春秋两季为好,春季栽培制种和栽培时间为:1制栽培种,2制栽培袋,5份采收第一批木耳,7份生产结束。
大器 AD623 图 35 AD623 引脚示意图 如图 35 所示为 AD623 引脚示意图。 引脚 7 分别接正负 5V 电压,参考端 5 接地,在引脚 1 跟 8 之间接一个可调电阻,通过调节的阻值来改变放大倍数。 微弱信号分别从引 脚 3 进入放大器放大后从引脚 6 脚输出。 A/D 转换器ICL7135 的输入电压变化范围是 2V~ +2V,传感器的输出电压信号在 0~ 20mv
件描述语言设计了一个电子钟系统。 该系统在开发软件 Quartus Ⅱ环境中设计完成,本文给出了设计该数字系统的流程和方法,最后通 过 CPLD 实现预定功能。 关键词:硬件描述语言;VHDL;Quartus Ⅱ;电子钟;CPLDDesign of Electronic clock Based On Hardware Description Language VHDLKong
、物理脱毒法1、水洗法:将发霉的玉米磨成碎粉,倒进缸中,加入 3的水,然后进行搅拌静置浸泡,每日搅拌换水 2 次,直至浸泡的水由茶色变成无色为止。 2、脱胚去毒法:将玉米磨成 米的小颗粒,加 5的清水后进行搅拌、胚部碎片因轻而浮在水面上,将其捞出或随水倒掉,如此反复数次,即可达到脱胚去毒的目的。 3、用石灰水浸法。 将发霉玉米粉碎成直径 米的小颗粒,然后将过 120目筛后的石灰粉按