数据库连接池_第1页
数据库连接池_第2页
数据库连接池_第3页
数据库连接池_第4页
数据库连接池_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库连接池第一页,共二十六页,编辑于2023年,星期三学习内容:为什么使用连接池可以使用哪些连接池如何在程序中使用连接池常见连接池使用举例第二页,共二十六页,编辑于2023年,星期三一、为什么使用连接池为什么要使用连接池任何应用程序都必须先拥有一个活动的数据库连接,然后才能访问数据库。数据库连接是一个很占资源且I/O开销很大的操作,并且如果每次想使用数据库连接时都必须创建它,那么它将会成为程序性能的瓶颈。第三页,共二十六页,编辑于2023年,星期三一、为什么使用连接池例如在JavaBean中操作数据库,一般的思路是把Connection对象作为Bean的一个属性,然后在构造函数中创建并初始化该对象,创建的方法是使用DriverManager.getConnection()。使用完成后调用close()方法进行关闭。第四页,共二十六页,编辑于2023年,星期三一、为什么使用连接池前述的JavaBean一般会在应用程序中多次使用。这样就会带来一个不好的结果:每次调用Bean对象,都会通过构造函数创建其Connection对象。JDBC创建与销毁连接对象是一个资源开销极大的操作,尤其在大量用户并发访问应用程序时,这个现象会更加明显。第五页,共二十六页,编辑于2023年,星期三一、为什么使用连接池数据库连接是一种关键的有限的昂贵的资源,这一点在多用户并发的应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。第六页,共二十六页,编辑于2023年,星期三一、为什么使用连接池数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这样一来可以大大减小应用程序中频繁创建和销毁连接对象的操作次数,降低服务器端的开销。这项技术能明显提高对数据库操作的性能。第七页,共二十六页,编辑于2023年,星期三一、为什么使用连接池数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。第八页,共二十六页,编辑于2023年,星期三二、可以使用哪些连接池1、可以自己写一个连接池类,然后使用它。当然写一个性能稳定的连接池类是较为复杂的一件事情。2、使用J2EE服务器自带连接池,如Tomcat自带的连接池。3、可以使用开源连接池。第九页,共二十六页,编辑于2023年,星期三二、可以使用哪些连接池开源连接池1、C3P0:C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection和Statement池的DataSources对象。第十页,共二十六页,编辑于2023年,星期三二、可以使用哪些连接池2、Proxool:这是一个JavaSQLDriver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能。第十一页,共二十六页,编辑于2023年,星期三二、可以使用哪些连接池3、JakartaDBCP

:DBCP是一个依赖Jakartacommons-pool对象池机制的数据库连接池,DBCP可以直接的在应用程序用使用。第十二页,共二十六页,编辑于2023年,星期三二、可以使用哪些连接池4、BoneCP:BoneCP是一个快速,开源的数据库连接池。帮你管理数据连接让你的应用程序能更快速地访问数据库。比C3P0/DBCP连接池快25倍。第十三页,共二十六页,编辑于2023年,星期三二、可以使用哪些连接池5、其它开源连接池:DDConnectionBroker、DBPool、XAPool、Primrose、SmartPool、MiniConnectionPoolManager等。第十四页,共二十六页,编辑于2023年,星期三三、如何在程序中使用连接池在Java程序中,可以引入连接池需要的jar包,然后使用连接池中的相关类进行配置,最后得到连接对象。见文档2.doc。第十五页,共二十六页,编辑于2023年,星期三三、如何在程序中使用连接池但是这种操作是利用BoneCP提供的连接池相关类进行的,而不是直接使用JDBC来管理连接的,因此在得到连接对象之前,使用者只能使用BoneCP提供的API,而不是统一的JDBCAPI。适合在非J2EE环境下使用。第十六页,共二十六页,编辑于2023年,星期三三、如何在程序中使用连接池在JDBC2.0中,引入了数据源(DataSource)的概念。目前在J2EE应用中,通过DataSource获取数据库连接是首选方式,因为这样一来,使用者使用的是统一的JDBCAPI。第十七页,共二十六页,编辑于2023年,星期三三、如何在程序中使用连接池通常DataSource对象是从连接池提供连接,一般对于不同的J2EE服务器,或不同的数据源类型,虽然数据源的配置内容不尽相同,但是只要配置完成后,程序中使用DataSource提供的API就可以得到连接池中的连接,非常方便。第十八页,共二十六页,编辑于2023年,星期三三、如何在程序中使用连接池使用DataSource的优势使用DataSource接口会使得程序变得很灵活,移植性很强。从后面的介绍将看到,DataSource的设置和使用DataSource获得连接两种操作是分离的,因此不需要修改程序就可以改变客户端对不同数据源(如数据库)的访问。DataSource隐藏了从连接池获得连接的细节,程序员不需要关心其内部操作,甚至不用关心连接参数。第十九页,共二十六页,编辑于2023年,星期三三、如何在程序中使用连接池一般通过在环境(context)中进行查找来获取一个DataSource。简单的说,context是一种把名称和资源相关联的手段。程序员一般先创建一个DataSource对象(null),然后把这个实例和某一个环境绑定到一起。绑定(binding)是指将资源和名称进行关联的行为。例如文件内容和文件名的绑定。这样就可以在程序中通过相应的名称获得一个DataSource的引用了。第二十页,共二十六页,编辑于2023年,星期三四、常见连接池使用举例1、使用Tomcat6.0的连接池前提:已经将数据库提供的JDBC驱动程序拷贝到正确位置。(Tomcat的lib中和工程目录的lib中)(1)设置context.xml文件,添加数据源的配置信息。见具体的文件设置。第二十一页,共二十六页,编辑于2023年,星期三四、常见连接池使用举例maxIdle,连接池中连接的最大空闲数。数据库连接有最大空闲时间,超过空闲时间,数据库连接将被标记为不可用,然后被释放。设置最大空闲数的目的是在没有任何数据库连接时也保持若干数量的空闲连接数。设为0表示无限制。默认为5,表示表示即使没有数据库连接时依然可以保持5空闲的连接,而不被清除,随时处于待命状态。第二十二页,共二十六页,编辑于2023年,星期三四、常见连接池使用举例maxActive,连接池的最大数据库激活连接数。设为0表示无限制。缺省为50,表示同时最多有20个数据库连接。maxWait,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。缺省为5000,表示5秒后超时。第二十三页,共二十六页,编辑于2023年,星期三四、常见连接池使用举例(2)在程序中使用设置好的DataSource。见WebMVCPrj工程。第二十四页,共二十六页,编辑于2023年,星期三四、常见连接池使用举例2、使用开源连接池BoneCP(1)环境环境:jdk1.6,tomcat6.0.20,bonecp-0.6.4需要的包:google-collections-1.0.jar,slf4j-api-1.5.11.jar,slf4j-log4j12-1.5.11.jar,bonecp-0.6.4.ja

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论