首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDBC 3.0 連線池框架深度解析:ConnectionPoolDataSource 與 PooledConnection

     編輯:Java 相關知識

JDBC 3.0 定義標準化連線池 SPI,分離驅動廠商與應用伺服器職責,實現可攜式連線池實作。

傳統連線痛點

  • 每次 getConnection() 建立物理連線,開銷大
  • 多層架構下頻繁開關連線嚴重拖慢效能

連線池核心原理

重用 PooledConnection(物理連線),應用取得的是其輕量級 Connection 句柄。關閉時歸還池中而非物理斷開。

JDBC 3.0 關鍵介面

介面/類別角色提供者
ConnectionPoolDataSourcePooledConnection 工廠Driver Vendor (JDBC 驅動廠商)
PooledConnection物理連線代表,產生邏輯 ConnectionDriver Vendor
DataSource應用程式取得連線的入口Pooling Vendor (應用伺服器)
ConnectionEventListener監聽連線關閉/錯誤事件Pooling Vendor (池實作)
ConnectionEvent事件載體JDBC 規範

雙層協作流程

  1. 應用呼叫 DataSource.getConnection()
  2. 池實作檢查可用 PooledConnection
  3. 無可用 → 呼叫 ConnectionPoolDataSource.getPooledConnection() 由驅動建立新物理連線
  4. 池實作註冊 ConnectionEventListener 監聽關閉事件
  5. 返回 PooledConnection.getConnection() 產生的邏輯 Connection
  6. 應用用完呼叫 close() → 觸發 ConnectionEvent → 池實作回收 PooledConnection

JDBC 3.0 連線池架構圖 UML 類別關係圖

兩種實作層級

  • Driver 級:驅動廠商完整實作池邏輯(如 Oracle UCP)
  • Application Server 級:驅動提供 SPI,AS 實作池邏輯(Tomcat DBCP、WebLogic、WebSphere)

應用程式碼零修改:只需改用 DataSource (JNDI) 取代 DriverManager,即可透明享受連線池效能提升。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved