首頁 >資料庫 >mysql教程 >我應該關閉池化 JDBC 連線嗎?

我應該關閉池化 JDBC 連線嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-03 22:19:14953瀏覽

Should I Close Pooled JDBC Connections?

關閉池中的 JDBC 連線

問題:使用連線池時是否應該關閉 JDBC 連線?如果是這樣,那不是違背了池化的目的嗎?

答案:是的,應該關閉池化連接。關閉池連線會將底層連線釋放回池中。

連線池會追蹤哪些連線正在使用以及哪些連線空閒。當連線關閉時,池將其識別為可供重複使用。

問題:以下方法是否適合從池或 DriverManager 取得連線?

public Connection getConnection(boolean pooledConnection) throws SQLException {
    if (pooledConnection) {
        if (ds == null) {
            try {
                ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/NamedInTomcat");
                return ds.getConnection();
            } catch (NamingException e) {
                e.printStackTrace();
            }
        }
        return (ds == null) ? getConnection(false) : ds.getConnection();
    }
    return DriverManager.getConnection("jdbc:mysql://..." + dbName, uName, pWord);
}

答案:不建議使用該程式碼。 DataSource 應在應用程式啟動期間初始化一次,而不是在方法中初始化。此外,同步和空檢查是不必要的。該方法應該簡單地查找 DataSource 一次並一致地返回連接。

其他注意事項:

  • 嘗試時始終以相反的順序關閉 JDBC 資源-with-resources 語句或在 finally 區塊中。
  • 如果您正在使用,請避免使用 DriverManager 手動建立連線連線池。

以上是我應該關閉池化 JDBC 連線嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn