第2讲数据库连接池优秀PPT.ppt
《第2讲数据库连接池优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第2讲数据库连接池优秀PPT.ppt(36页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、现在学习的是第1页,共36页本章目标数据连接池原理数据连接池原理DBCP、C3P0,JNDI连接池配置使用连接池配置使用现在学习的是第2页,共36页一、回顾数据库直接连接JDBC可做三件事:与数据库建立连接、执行SQL语句、处理结果ConnectionDriverManagerStatementResultSetDriverManager:依据数据库的不同,管理:依据数据库的不同,管理JDBC驱动驱动Connection:负责连接数据库并担任传送数据的任务:负责连接数据库并担任传送数据的任务Statement:由由Connection产生、负责执行产生、负责执行SQL语句语句ResultSet
2、:负责保存:负责保存Statement执行后所产生的查询结果执行后所产生的查询结果客客户户端端数据库服务器数据库服务器1234现在学习的是第3页,共36页使用数据直接连接的缺点在某一时刻连接必须服务于一个用户,以免造成事务冲突1.来自不同用户的请求(都使用了同一个连接)对相同的事务进行操作,如果一个请求试图回滚,那么所有使用相同连接的数据库操作都要被回滚。创建连接需要耗费时间1.创建一个连接大概需要1-2秒的时间。保持连接打开状态的代价很大1.尤其是在系统资源(例如内存)方面。2.数据库产品的许可证都按照同时打开的连接数目来收费。现在学习的是第4页,共36页二、数据库连接池原理什么是数据库连接
3、池1.数据库连接池:Connectionpooling,它是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。现在学习的是第5页,共36页二、数据库连接池原理数据库连接池运行机制1.从连接池获取或创建可用连接;2.使用完毕之后,把连接返还给连接池;3.在系统关闭前,断开所有连接并释放连接占用的系统资源;4.还能够处理无效连接(原来登记为可用的连接,由于某种原因不再可用,如超时,通讯问题),并能够限制连接池中的连接总数不低于某个预定值和不超过某个预定值;现在学习的是第6页,共36页二、数据库连接池原理连接池示例图:现在学习的是第7页,共36
4、页二、数据库连接池原理使用数据库连接池技术的好处使用数据库连接池技术的好处1资源重用资源重用由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。线程的数量)。2更快的系统响应速度更快的系统响应速度数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均数据库连接池在初始化过程中,
5、往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。从而缩减了系统整体响应时间。3统一的连接管理,避免数据库连接泄漏统一的连接管理,避免数据库连接泄漏在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源
6、泄漏。常规数据库连接操作中可能出现的资源泄漏。现在学习的是第8页,共36页二、数据库连接池原理常用的数据库连接池1.基于JNDI、C3P0、DBCP技术的数据连接池(1)JNDI(JavaNamingandDirectoryInterface):是SUN公司提供的一种标准的Java命名系统接口,是一组在Java应用中访问命名和目录服务的API。命名服务是将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,它提供了应用编程接口(applicationprogramminginterface,API)和服务提供者接口(serviceproviderinterface,SPI)
7、。这一点的真正含义是,要让应用与命名服务或目录服务交互,必须有这个服务的JNDI服务提供者,这正是JNDISPI发挥作用的地方。服务提供者基本上是一组类,这些类为各种具体的命名和目录服务实现了JNDI接口很象JDBC驱动为各种具体的数据库系统实现了JDBC接口一样。作为一个应用开发者,不必操心JNDISPI。只需要确认要使用的每一个命名或目录服务都有服务提供者。(2)C3P0:连接池作者是星球大战迷,C3P0就是其中的一个机器人,并且这个名称中包涵connection和pool的单词字母。因此叫这个名字。(3)DBCP(DataBaseconnectionpool):是apache上的一个ja
8、va连接池项目,也是tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar现在学习的是第9页,共36页三、连接池的使用DBCP主要配置属性:1.下面对里面几个比较重要的参数进行一下说明:2.name:表示你的连接池的名称也就是你要访问连接池的地址3.type:是对象的类型4.driverClassName:是数据库驱动的名称5.url:是数据库的地址6.username:是登陆数据库的用户名7.password:是登陆数据库的密码8.factory:默认的使用tomcat.dbcp.
9、BasicDataSourceFactory,可以使用factory=mons.dbcp.BasicDataSourceFactory,就是Apache的开源的数据库连接池,但一定要把commons-dbcp-1.4.jar放到项目的lib里。3.1DBCP使用现在学习的是第10页,共36页maxIdle,是最大的空闲连接数,这里取值为2,表示即使没有数据库连接时依然可以保持2空闲的连接,而不被清除,随时处于待命状态。maxWait,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连接。三、连接池
10、的使用现在学习的是第11页,共36页DBCP应用应用(1)新建一个)新建一个web工程工程(2)把数据库包导入到)把数据库包导入到lib如如mysql-connector-java-5.0.8-bin(3)把)把common-dbcp.jar,common-pool.jar,common-collections.jar导入到导入到lib(4)在在WebRootMETA-INF建立文件建立文件context.xml内容如下:内容如下:三、连接池的使用现在学习的是第12页,共36页(5)在jsp中使用数据库连接池导入类包java.sql.*,mons.dbcp.*java.sql.SQLExcep
11、tion.*javax.naming.Context.*javax.naming.InitialContextjavax.sql.DataSourcejavax.naming.NamingException三、连接池的使用现在学习的是第13页,共36页(6)编写代码%tryInitialContextcontext=newInitialContext();DataSourceds=(DataSource)context.lookup(java:/comp/env/jdbc/test);Connectionconn=ds.getConnection();Statementstmt=conn.cr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库连接 优秀 PPT
限制150内