ODBC → JDBC 歷史必然
- ODBC:C 語言 API、指針密集、平台綁定、簡繁混雜。
- Java 爆發期(1995~),開發者被迫在 Java 中 JNI 調用 ODBC,喪失跨平台、OO、安全優勢。
- Sun 推出 JDBC(JDK 1.1 正式納入標準),純 Java、面向對象、無指針、簡單事物簡單做、複雜特性可選擇、驅動可自動下載部署(Applet/WebStart 時代)。
JDBC 三大核心任務
- 建立連接
- 發送 SQL
- 處理結果集
底層 API 定位
直接發送 SQL 字符串,勝任基礎訪問;上層可構建:SQLJ(嵌入式 SQL 預編譯)、OR 映射(行→對象自動映射)、圖形化開發工具。
JDBC vs ODBC vs RDO/ADO/OLE DB
| JDBC | ODBC | 微軟系 |
| 語言 | Java | C | COM/C++ |
| 指針 | 無 | 大量 void* | 封裝指針 |
| 風格 | OO、介面導向 | 函數式 | OO 包裝層 |
| 部署 | 純 Java 驅動自動下載 | 需客戶端裝驅動/管理器 | 同 ODBC |
| 橋接 | JDBC-ODBC Bridge 過渡用 | 基礎 | ODBC 之上 |
兩層 vs 三層架構
- 兩層:Applet/Application 直連 DB(Client/Server),適合內網、簡單場景。
- 三層:中間層(Java EE 服務器)承擔連接池、事務、安全、邏輯,Client 僅調用遠程介面。隨著 JIT 編譯器成熟,Java 寫中間層性能已足夠,JDBC 成為關鍵樞紐。
驅動類型四選一
- Type 4(純 Java、直連):廠商原生,性能最好、跨平台、無依賴。首選。
- Type 3(三層、中間件轉發):擴展性強、適合異構 DB 遷移,性能稍遜。
- Type 2(本地客戶端庫):性能次之、需客戶端裝庫、遷移痛、非純 Java。少用。
- Type 1(JDBC-ODBC Bridge):兼容舊 Access/Excel/無 Type 4 驅動的 DB,維護最麻煩。最後手段。
選擇原則:能用 Type 4 就用 Type 4;需遷移彈性上 Type 3;被迫兼容舊系統才碰 Type 1/2。