codecamp

OceanBase 复用语句对象

OceanBase Connector/J 的语句池功能允许应用程序以与使用 Connection 对象相同的方式重用 ​PreparedStatement​ 对象。

多个逻辑连接可以以透明方式重用 ​PreparedStatement​ 对象。

使用 Pooled Statement

应用程序可以通过从 ​Statement​ 接口调用​ isPoolable​ 方法来找出数据源是否支持语句池。如果返回值为 ​true​,则应用程序知道正在准备 ​PreparedStatement​ 对象。应用程序还可以通过使用 Statement 接口中的 setPoolable 方法来请求要合并或不合并的语句。

Pooled Statement 的重用对于应用程序应该是完全透明的,也就是说,无论 ​PreparedStatement​ 对象是否参与语句池,应用程序代码应保持相同。如果应用程序关闭了 ​PreparedStatement​ 对象,则必须调用 ​Connection.prepareStatement​ 方法进行重用。

关闭 Pooled Statement

应用程序关闭 Pooled Statement 的方式与关闭非 Pooled Statement 的方式完全相同。一旦语句被关闭,无论该语句是池中的还是非池中的,都不再供应用程序使用,如果尝试重用该语句会引发异常。唯一可见的区别是应用程序无法直接关闭正在池化的物理语句,而是由池管理器负责完成。​PooledConnection.closeAll ​方法关闭给定物理连接上打开的所有语句,从而释放与这些语句关联的资源。

关闭 Pooled Statement 的方法如下:

  • close

    此 java.sql.Statement 接口方法由应用程序调用。如果正在对该语句进行池化,则它将关闭该应用程序使用的逻辑语句,但不会关闭正在池化的物理语句。

  • close

    此 java.sql.Connection 接口方法由应用程序调用。此方法的行为根据使用该语句的连接是否被池化而有所不同。

  • 非池化连接

    此方法关闭物理连接以及该连接创建的所有语句。这是必需的,因为垃圾回收机制无法检测何时可以释放外部管理的资源。

  • 池化连接

    此方法关闭逻辑连接及其返回的逻辑语句,但打开基础的 ​PooledConnection​ 对象和所有关联的缓冲语句。

  • PooledConnection.closeAll

    ​连接池管理器调用此方法以关闭 ​PooledConnection​ 对象所有正在池化的物理语句。


OceanBase 使用语句缓存
OceanBase Failover 和 Load-Balancing
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }