我在我的應用程序中使用連接池。我的問題是:在連接池環境中明確需要statement.close()嗎?
在連接池環境的情況下是否顯式要求在關閉連接之前關閉語句?
在連接池環境連接沒有關閉,(但返回到空閒連接池)。 我檢查了jdbc 4.0功能規格。在第9.4.4點中,它明確指出:
關閉連接對象應用程序調用方法Connection.close來指示它已完成使用連接。當調用對象的close方法時,從給定Connection對象創建的所有Statement對象都將被關閉。一旦Connection被關閉,除close,isClosed或isValid方法外,任何嘗試訪問其任何方法的嘗試都將導致拋出SQLException。
因此,jdbc規範強制在關閉連接時關閉所有語句。那麼它僅適用於僅適用於非連接池環境還是適用於連接池環境?
根據我的觀點,在彙集環境的情況下應該沒有問題,因爲我們正在編寫接口(java.sql.Connection
& java.sql.Statement
)。所以我們不打擾實現,父類(java.sql.Connection
)沒有關於子/阻塞類(Vendor實現類)的任何信息。
如果jdbc規範要求在關閉連接時關閉語句的所有實現,那麼當我們使用connection.close方法(在連接池或非池化環境中)時,我們可以輕鬆地跳過statement.close方法。 – 2009-06-03 16:37:36
...這是一個問題嗎? – 2009-06-03 18:47:43