鴻蒙OS PooledConnection

2022-11-02 10:53 更新

PooledConnection

public interface PooledConnection

為連接池管理提供掛鉤的對象。 PooledConnection 對象表示與數(shù)據(jù)源的物理連接。 當應(yīng)用程序完成連接時,連接可以被回收而不是關(guān)閉,從而減少需要建立的連接數(shù)量。

應(yīng)用程序程序員不直接使用 PooledConnection 接口; 相反,它由管理連接池的中間層基礎(chǔ)設(shè)施使用。

當應(yīng)用程序調(diào)用 DataSource.getConnection 方法時,它會返回一個 Connection 對象。 如果正在進行連接池,則該 Connection 對象實際上是 PooledConnection 對象的句柄,它是一個物理連接。

連接池管理器(通常是應(yīng)用程序服務(wù)器)維護一個 PooledConnection 對象池。如果池中有可用的 PooledConnection 對象,則連接池管理器會返回一個 Connection 對象,該對象是該物理連接的句柄。如果沒有可用的 PooledConnection 對象,則連接池管理器調(diào)用 ConnectionPoolDataSource 方法 getPoolConnection 來創(chuàng)建新的物理連接。實現(xiàn) ConnectionPoolDataSource 的 JDBC 驅(qū)動程序創(chuàng)建一個新的 PooledConnection 對象并返回一個句柄。

當應(yīng)用程序關(guān)閉連接時,它會調(diào)用 Connection 方法 close。完成連接池時,會通知連接池管理器,因為它已使用 ConnectionPool 方法 addConnectionEventListener 將自己注冊為 ConnectionEventListener 對象。連接池管理器停用 PooledConnection 對象的句柄并將 PooledConnection 對象返回到連接池,以便可以再次使用它。因此,當應(yīng)用程序關(guān)閉其連接時,底層物理連接將被回收而不是被關(guān)閉。

在連接池管理器調(diào)用 PooledConnection 方法關(guān)閉之前,物理連接不會關(guān)閉。 通常調(diào)用此方法以有序關(guān)閉服務(wù)器,或者如果致命錯誤導(dǎo)致連接不可用。

連接池管理器通常也是語句池管理器,維護 PreparedStatement 對象池。 當應(yīng)用程序關(guān)閉準備好的語句時,它會調(diào)用 PreparedStatement 方法 close。 當語句池完成時,池管理器會收到通知,因為它已使用 ConnectionPool 方法 addStatementEventListener 將自己注冊為 StatementEventListener 對象。 因此,當應(yīng)用程序關(guān)閉其 PreparedStatement 時,底層的準備好的語句被回收而不是被關(guān)閉。

Since:

1.4

方法總結(jié)

修飾符和類型 方法 描述
void addConnectionEventListener(ConnectionEventListener listener) 注冊給定的事件偵聽器,以便在此 PooledConnection 對象上發(fā)生事件時通知它。
void addStatementEventListener(StatementEventListener listener) 使用此 PooledConnection 對象注冊 StatementEventListener。
void close() 關(guān)閉此 PooledConnection 對象表示的物理連接。
Connection getConnection() 創(chuàng)建并返回一個 Connection 對象,該對象是此 PooledConnection 對象表示的物理連接的句柄。
void removeConnectionEventListener(ConnectionEventListener listener) 當此 PooledConnection 對象上發(fā)生事件時,從將通知的組件列表中刪除給定的事件偵聽器。
void removeStatementEventListener(StatementEventListener listener) 當驅(qū)動程序檢測到 PreparedStatement 已關(guān)閉或無效時,將通知的組件列表中刪除指定的 StatementEventListener。

方法詳情

getConnection

Connection getConnection() throws SQLException

創(chuàng)建并返回一個 Connection 對象,該對象是此 PooledConnection 對象表示的物理連接的句柄。 當應(yīng)用程序調(diào)用了 DataSource.getConnection 方法并且沒有可用的 PooledConnection 對象時,連接池管理器調(diào)用此方法。 有關(guān)更多信息,請參閱 PooledConnection。

返回:

一個 Connection 對象,它是此 PooledConnection 對象的句柄

Throws:

Throw名稱 Throw描述
SQLException 如果發(fā)生數(shù)據(jù)庫訪問錯誤
SQLFeatureNotSupportedException 如果 JDBC 驅(qū)動程序不支持此方法

Since:

1.4

close

void close() throws SQLException

關(guān)閉此 PooledConnection 對象表示的物理連接。 應(yīng)用程序從不直接調(diào)用此方法; 它由連接池模塊或管理器調(diào)用。

Throws:

Throw名稱 Throw描述
SQLException 如果發(fā)生數(shù)據(jù)庫訪問錯誤
SQLFeatureNotSupportedException 如果 JDBC 驅(qū)動程序不支持此方法

Since:

1.4

addConnectionEventListener

void addConnectionEventListener(ConnectionEventListener listener)

注冊給定的事件偵聽器,以便在此 PooledConnection 對象上發(fā)生事件時通知它。

參數(shù):

參數(shù)名稱 參數(shù)描述
listener 一個組件,通常是連接池管理器,它實現(xiàn)了 ConnectionEventListener 接口,并希望在連接關(guān)閉或出現(xiàn)錯誤時得到通知

removeConnectionEventListener

void removeConnectionEventListener(ConnectionEventListener listener)

當此 PooledConnection 對象上發(fā)生事件時,從將通知的組件列表中刪除給定的事件偵聽器。

參數(shù):

參數(shù)名稱 參數(shù)描述
listener 一個組件,通常是連接池管理器,它已經(jīng)實現(xiàn)了 ConnectionEventListener 接口并作為偵聽器注冊到此 PooledConnection 對象中

addStatementEventListener

void addStatementEventListener(StatementEventListener listener)

使用此 PooledConnection 對象注冊 StatementEventListener。 希望在連接創(chuàng)建的 PreparedStatements 關(guān)閉或檢測到無效時收到通知的組件可以使用此方法向此 PooledConnection 對象注冊 StatementEventListener。

參數(shù):

參數(shù)名稱 參數(shù)描述
listener 一個實現(xiàn) StatementEventListener 接口的組件,該接口將使用此 PooledConnection 對象注冊

Since:

1.6

removeStatementEventListener

void removeStatementEventListener(StatementEventListener listener)

當驅(qū)動程序檢測到 PreparedStatement 已關(guān)閉或無效時,將通知的組件列表中刪除指定的 StatementEventListener。

參數(shù):

參數(shù)名稱 參數(shù)描述
listener 實現(xiàn)先前使用此 PooledConnection 對象注冊的 StatementEventListener 接口的組件

Since:

1.6

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號