OceanBase 復(fù)用語(yǔ)句對(duì)象

2021-06-30 16:01 更新

OceanBase Connector/J 的語(yǔ)句池功能允許應(yīng)用程序以與使用 Connection 對(duì)象相同的方式重用 ?PreparedStatement? 對(duì)象。

多個(gè)邏輯連接可以以透明方式重用 ?PreparedStatement? 對(duì)象。

使用 Pooled Statement

應(yīng)用程序可以通過(guò)從 ?Statement? 接口調(diào)用? isPoolable? 方法來(lái)找出數(shù)據(jù)源是否支持語(yǔ)句池。如果返回值為 ?true?,則應(yīng)用程序知道正在準(zhǔn)備 ?PreparedStatement? 對(duì)象。應(yīng)用程序還可以通過(guò)使用 Statement 接口中的 setPoolable 方法來(lái)請(qǐng)求要合并或不合并的語(yǔ)句。

Pooled Statement 的重用對(duì)于應(yīng)用程序應(yīng)該是完全透明的,也就是說(shuō),無(wú)論 ?PreparedStatement? 對(duì)象是否參與語(yǔ)句池,應(yīng)用程序代碼應(yīng)保持相同。如果應(yīng)用程序關(guān)閉了 ?PreparedStatement? 對(duì)象,則必須調(diào)用 ?Connection.prepareStatement? 方法進(jìn)行重用。

關(guān)閉 Pooled Statement

應(yīng)用程序關(guān)閉 Pooled Statement 的方式與關(guān)閉非 Pooled Statement 的方式完全相同。一旦語(yǔ)句被關(guān)閉,無(wú)論該語(yǔ)句是池中的還是非池中的,都不再供應(yīng)用程序使用,如果嘗試重用該語(yǔ)句會(huì)引發(fā)異常。唯一可見(jiàn)的區(qū)別是應(yīng)用程序無(wú)法直接關(guān)閉正在池化的物理語(yǔ)句,而是由池管理器負(fù)責(zé)完成。?PooledConnection.closeAll ?方法關(guān)閉給定物理連接上打開(kāi)的所有語(yǔ)句,從而釋放與這些語(yǔ)句關(guān)聯(lián)的資源。

關(guān)閉 Pooled Statement 的方法如下:

  • close

    此 java.sql.Statement 接口方法由應(yīng)用程序調(diào)用。如果正在對(duì)該語(yǔ)句進(jìn)行池化,則它將關(guān)閉該應(yīng)用程序使用的邏輯語(yǔ)句,但不會(huì)關(guān)閉正在池化的物理語(yǔ)句。

  • close

    此 java.sql.Connection 接口方法由應(yīng)用程序調(diào)用。此方法的行為根據(jù)使用該語(yǔ)句的連接是否被池化而有所不同。

  • 非池化連接

    此方法關(guān)閉物理連接以及該連接創(chuàng)建的所有語(yǔ)句。這是必需的,因?yàn)槔厥諜C(jī)制無(wú)法檢測(cè)何時(shí)可以釋放外部管理的資源。

  • 池化連接

    此方法關(guān)閉邏輯連接及其返回的邏輯語(yǔ)句,但打開(kāi)基礎(chǔ)的 ?PooledConnection? 對(duì)象和所有關(guān)聯(lián)的緩沖語(yǔ)句。

  • ?PooledConnection.closeAll

    ?連接池管理器調(diào)用此方法以關(guān)閉 ?PooledConnection? 對(duì)象所有正在池化的物理語(yǔ)句。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)