OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt

上传人:za****8 文档编号:12667520 上传时间:2020-05-13 格式:PPT 页数:20 大小:389.27KB
返回 下载 相关 举报
OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt_第1页
第1页 / 共20页
OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt_第2页
第2页 / 共20页
OracleJDBC连接池和缓存161OracleJDBC连接池和缓存包.ppt_第3页
第3页 / 共20页
点击查看更多>>
资源描述
第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程序需要连接数据库时,就直接从连接池中获取一个连接,当使用结束时,再将连接归还给连接池。这样一个数据库连接可以被很多JDBC程序实例共享,无需每次与数据库交互时都进行数据库的连接与断开,大大提高了访问数据库的速度。有时候一个JDBC程序需要访问不同的数据库,这就需要为每一个数据库都建立一个连接池。OracleJDBC连接缓存就是用于管理和优化JDBC连接池的管理器。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!