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

JDBC 連接 DB2 四大驅動類型詳解:Type 2/3/4 選型指南

     編輯:Java 相關知識

JDBC 驅動類型體系回顧

類型架構特點
Type 1JDBC-ODBC Bridge已棄用 (Java 8 移除),需 ODBC 驅動,雙重轉換效能差
Type 2Native APIJava -> JNI -> DB Client Lib -> 網路 -> DB Server
Type 3Net-Protocol (Middleware)Java -> 網路 -> Middleware Server -> DB Client Lib -> DB Server
Type 4Pure Java (Thin Driver)Java -> 網路 -> DB Server (直接實現 DB 協議),無客戶端庫依賴

DB2 四種驅動實際對應

注意:IBM 從未提供 Type 1 驅動。以下為 DB2 實際支援的三類:

Type 2:COM.ibm.db2.jdbc.app.DB2Driver (舊包 db2java.zip)

  • 機制:JNI 呼叫本地 db2jdbc.dll (Windows) / libdb2j.so (Unix),再經 DB2 客戶端通訊層連接伺服器。
  • 部署需求:應用運行機器**必須安裝 DB2 Client**,配置 db2dsdriver.cfg 或目錄節點/資料庫別名。
  • URL 格式:jdbc:db2:<database_alias> (如 jdbc:db2:sample)。
  • 適用場景:本地應用、需利用 Client 端負載均衡/自動重路由、舊版相容。

Type 3:COM.ibm.db2.jdbc.net.DB2Driver (舊包 db2java.zip)

  • 機制:JDBC 請求發送至 **DB2 JDBC Applet Server** (默認埠 6789),由 Server 端經 Type 2 邏輯連接 DB2。
  • 部署需求:DB2 伺服器啟動 db2jstrt 服務監聽埠;客戶端無需 DB2 Client。
  • URL 格式:jdbc:db2://<host>:6789/<database> (如 jdbc:db2://dbserver:6789/SAMPLE)。
  • 現狀:已淘汰,不建議新專案使用 (單點故障、效能瓶頸、安全風險)。

Type 4:com.ibm.db2.jcc.DB2Driver (包 db2jcc.jar / db2jcc4.jar)

  • 機制:純 Java 實現 DRDA 協議,直接 TCP 連接 DB2 伺服器 (默認埠 50000),**零客戶端依賴**。
  • URL 格式:jdbc:db2://<host>:50000/<database> (如 jdbc:db2://dbserver:50000/SAMPLE)。
  • 編碼要求:資料庫建庫時建議 CODESET UTF-8 TERRITORY US,否則中文亂碼風險極高。
  • 適用場景:**現代首選** —— 部署簡單、跨平台、容器化友好、支援最新 JDBC 4.x/4.1/4.2/4.3 特性 (XML、NClob、RowId、National Character)。

代碼範例統一模板


Class.forName(DRIVER_CLASS).newInstance();
Connection conn = DriverManager.getConnection(URL, USER, PASS);
// ... 業務邏輯
conn.close();

選型決策樹

  1. **新專案 / 微服務 / 容器 / 雲原生** → **Type 4 (JCC Driver)** 無腦選。
  2. **舊系統維護、依賴 DB2 Client 特有功能 (CLI 追蹤、負載均衡)** → Type 2。
  3. **極老舊中間件架構、無法直連 DB2 埠** → Type 3 (評估遷移成本)。

常見坑點

  • db2jcc.jar vs db2jcc4.jar:JDK 1.4/1.5 用前者,JDK 6+ **必須用 db2jcc4.jar** (JDBC 4.0 SPI 自動註冊,無需 Class.forName)。
  • License 檔 db2jcc_license_cu.jar (連接 z/OS、iSeries) 或 db2jcc_license_cisuz.jar (全平台) 必須同目錄/classpath,否則拋 SQLCODE=-4229。
  • 連接池 (HikariCP/Druid) 配合 Type 4 時,driverClassName 可省略 (JDBC 4.0+ 自動發現)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved