OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt_第1页
OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt_第2页
OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt_第3页
OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt_第4页
OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

第16章OracleJDBC连接池和缓存,本章简介,JDBC连接池不为每个请求创建一个新连接,而是预先创建一个数据库连接,每当JDBC程序需要临时访问数据库时就使用这个连接。创建一个连接缓存(ConnectionCache)间接地使用连接池,连接缓存在创建一个连接池后,可以在需要时向连接池自动添加连接。本章通过示例,介绍JDBC连接池以及连接缓冲的实现方式。,16.1OracleJDBC连接池和缓存包,16.2实现OracleJDBC连接池,(1)创建一个连接池数据源对象。(2)使用这个连接池数据源对象设置物理数据库连接的属性。(3)创建一个缓冲的连接对象,它代表物理数据库连接。(4)请求、使用和最终关闭连接实例。使用连接实例访问数据库。需要再次访问数据库时,只需请求另一个连接实例。(5)关闭连接池的连接对象。,16.2.1创建一个连接池数据源对象,OracleConnectionPoolDataSource类实现了javax.sql包中定义的ConnectionPoolDataSource接口,还扩展了OracleDataSource类。例如,下面的语句:OracleConnectionPoolDataSourcemyOCPDS=newOracleConnectionPoolDataSource();,16.2.2设置物理数据库连接的属性,表16.3OracleDataSource属性,示例:OracleDataSourcemyDataSource=newOracleDataSource();/创建Oracle数据源对象setServerName()设置正在运行该数据库的服务器名称setDatabaseName()设置数据库名setPortNumber()设置OracleNet监听器在哪个端口上等待请求setDriverType()设置用于与数据库进行通信的OracleJDBC驱动程序。setUser()指定在数据库连接中使用的数据库用户名setPassword()指定在数据库连接中使用的数据库口令,示例:StringserverName=myDataSource.getServerName();StringdatabaseName=myDataSource.getDatabaseName();StringdriverType=myDataSource.getDriverType();StringportNumber=myDataSource.getPortNumber();,示例:myOCPDS.setServerName(DELL);myOCPDS.setDatabaseName(SONGBO);myOCPDS.setPortNumber(1521);myOCPDS.setDriverType(thin);myOCPDS.setUser(store_user);myOCPDS.setPassword(store_password);,16.2.3创建一个缓冲的连接对象,缓冲的连接对象代表物理连接,可以使用它请求数据库连接实例。javax.sql包中定义的OraclePooledConnection类实现了PooledConnection接口,所以可以使用这个类来创建缓冲的连接对象。例如,下面的语句:PooledConnectionmyPooledConnection=myOCPDS.getPooledConnection();,16.2.4请求、使用和最终关闭连接实例,例如,下面的语句:ConnectionmyConnection=myPooledConnection.getConnection();例如,下面的语句:myConnection.close();,16.2.5关闭缓冲的连接对象,在程序结束之前,应该使用close()方法关闭PooledConnection对象。例如,下面的语句:myPooledConnection.close();,16.3OracleJDBC连接缓存,连接缓存的主要优点如下:(1)可以使用一个连接缓存同时建立多个物理数据库连接,然后使用连接实例访问这些物理连接。(2)创建和管理表示所有物理连接所需的各个缓冲的连接对象不需要开发人员来处理。默认情况下,在需要连接的时候连接缓存会动态创建缓冲的连接对象。,16.3.1创建连接缓存,OracleConnectionCacheImplmyOCCI=newOracleConnectionCacheImpl();myOCCI.setServerName(DELL);myOCCI.setDatabaseName(SONGBO);myOCCI.setPortNumber(1521);myOCCI.setDriverType(thin);myOCCI.setUser(store_user);myOCCI.setPassword(store_password);,16.3.2请求、使用和关闭连接实例,访问数据库是通过一个连接实例实现的,所以需要使用OracleConnectionCacheImpl对象的getConnection()方法来请求一个连接实例。例如,下面的语句使用getConnection()方法从myOCCI对象请求一个连接实例,并且将返回的连接实例存储在myConnection类的对象中。ConnectionmyConnection=myOCCI.getConnection();,16.3.3关闭连接缓存,在程序结束之前,应该使用close()方法关闭OracleConnectionCacheImpl对象。例如,下面的语句:myOCCI.close();关闭myOCCI也会关闭缓存中的所有PooledConnection对象。,16.3.5控制PooledConnection对象数量,有下列3种连接缓存模式:(1)dynamic这是默认的模式,通常应该使用这种模式。在请求连接实例时,如果满足这两个条件,那么将创建一个新的PooledConnection对象来满足这个请求。当连接实例被关闭时,为处理请求而创建的额外PooledConnection对象被关闭。(2)fixedwait在请求连接实例时,如果前面的条件成立,那么请求被迫等待有连接实例空闲下来。(3)fixedwithnowait在请求连接实例时,如果前面的条件成立,那么请求立即被拒绝(不等待响应),而且对getConnection()方法的调用返回null。,示例:myOCCI.setCacheScheme(OracleConnectionCacheImpl.DYNAMIC_SCHEME);myOCCI.setCacheScheme(OracleConnectionCacheImpl.FIXED_WAIT_SCHEME);myOCCI.setCacheScheme(OracleConnectionCacheImpl.FIX_RETURN_NULL_SCHEME);,16.4本章小结,OracleJDBC连接池实际上就是一个存储数据库连接的容器,当JDBC程序需要连接数据库时,就直接从连接池中获取一个连接,当使用

温馨提示

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

评论

0/150

提交评论