jdbc 驅動類型
什么是jdbc驅動程序?jdbc 驅動程序實現了 jdbc api 中定義的接口,用于與數據庫服務器進行交互。
例如,使用 jdbc 驅動程序可以打開數據庫連接,并通過發送 sql 或數據庫命令,然后在收到結果與 java 進行交互。
java.sql 包中附帶的 jdk 包含定義各種類與他們的行為和實際實現在第三方驅動程序。第三方供應商實現了他們的數據庫驅動程序的 java.sql.driver 接口。
jdbc 驅動程序的實現,因為操作系統 和 java 運行的硬件平臺的不同而不同,共劃分為四大類。
1. jdbc-odbc橋 驅動程序
jdbc 橋接器用來訪問安裝在每個客戶機上的 odbc 驅動程序。使用 odbc,需要配置系統數據源名稱(dsn),表示在目標數據庫上。
當java 剛出來時,這是一個有用的驅動程序,因為大多數的數據庫只支持 odbc 訪問,但現在建議使用此類型的驅動程序僅用于實驗用途或在沒有其他選擇的情況。
2. jdbc-native api 調用
jdbc api調用轉換成原生的 c / c++ api 調用都有它獨特的數據庫。這些通常由數據庫廠商提供,并以相同的方式將jdbc-odbc橋驅動程序使用,特定供應商的驅動程序必須安裝在每臺客戶機上。
如果改變了數據庫,那么必須改變本機 api,因為它是具體到一個數據庫,他們大多是過時了,但現在可以實現一些速度增加了類型2驅動程序,因為它消除了數據庫的開銷。
oracle 調用接口(oci)驅動程序就是一個示例。
3. jdbc 網絡純 java
在類型3驅動程序,一個三層的方法來訪問數據庫。在jdbc客戶端使用標準的網絡套接字與中間件應用服務器進行通信。套接字的相關信息,然后由中間件應用服務器進入由dbms所需要的的調用格式轉換,并轉發到數據庫服務器。
這種驅動器是非常靈活的,因為它不需要安裝在客戶端上的代碼和一個單一的驅動器實際上可以提供訪問多個數據庫。
可以將應用服務器作為一個jdbc“代理”,這意味著它會調用客戶端應用程序。因此,需要應用服務器的配置,以有效地使用此驅動程序類型的一些知識。
應用服務器可能使用類型1,2,或4驅動程序與數據庫進行通信,了解細微之處將證明是有益的。
4. 100% 純 java
直接與供應商的數據庫進行通信,通過 socket連接一個純粹的基于 java 的驅動程序。這是可用于數據庫的最高性能的驅動程序,并且通常由供應商本身提供。
這種驅動器是非常靈活的,不需要在客戶端或服務器上安裝特殊的軟件。
mysql 的 connector/j 的驅動程序是一個本類型的驅動程序。因為他們的網絡協議的專有性的,數據庫廠商通常提供本類型的驅動程序。
5. 四種驅動器的使用場景
類型1驅動程序不被認為是部署級別的驅動程序,它通常僅用于開發和測試目的。
如果正在訪問一個類型的數據庫,如oracle,sybase或ibm,首選驅動程序是類型4。
如果java應用程序同時訪問多個數據庫類型,類型3是首選的驅動程序。
第2類驅動程序是在情況下:類型3或類型4驅動程序還沒有提供數據庫非常有用。