一下內容引用自http://wiki.jikexueyuan.com/project/jdbc/drive-types.html:
一、什么是JDBC驅動程序?
JDBC驅動實現了JDBC API中定義的接口,該接口用於與數據庫服務器進行交互。
例如,使用JDBC驅動程序可以打開數據庫連接,並通過發送SQL或數據庫命令,然后通過Java接收結果。
java.sql包中附帶的JDK,包含了定義各種類與他們的行為和實際實現,這些類都在第三方驅動程序中完成。第三方供應商在他們的數據庫驅動程序中都實現了java.sql.Driver接口。
二、JDBC驅動程序類型
JDBC驅動程序的實現,因為各種各樣的操作系統和Java運行在硬件平台的不同而不同。Sun公司將實現類型分為四類:類型1,2,3,4,其解釋如下:
1、類型1:JDBC-ODBC橋驅動程序:
在類型1驅動程序中,一個JDBC橋接器是用來訪問安裝在每個客戶機上的ODBC驅動程序。為了使用ODBC,需要在目標數據庫上配置系統數據源名稱(DSN)。
當Java剛出來時,這是一個很有用的驅動程序,因為大多數的數據庫只支持ODBC訪問,但現在此類型的驅動程序僅適用於實驗用途或在沒有其他選擇的情況。
自帶JDK 1.2中的JDBC-ODBC橋是這類驅動程序的一個很好的例子。
2、類型2:JDBC-Native API
在類型2驅動程序中,JDBC API調用轉換成原生的C/C++ API調用,這對於數據庫來說具有唯一性。這些驅動程序通常由數據庫供應商提供,並和JDBC-ODBC橋驅動程序同樣的方式使用。該供應商的驅動程序必須安裝在每台客戶機上。
如果改變了當前數據庫,必須改變原生API ,因為它是具體到某一個數據庫,並且他們大多已經失效了。即使這樣用類型2驅動程序也能提高一些速度,因為他消除了ODBC的開銷。
Oracle調用接口(OCI)驅動程序是一個類型2驅動程序的示例。
3、類型3:JDBC-Net純Java
在類型3驅動程序中,一般用三層方法來訪問數據庫。JDBC客戶端使用標准的網絡套接字與中間件應用服務器進行通信。套接字的相關信息被中間件應用服務器轉換為數據庫管理系統所要求的的調用格式,並轉發到數據庫服務器。
這種驅動程序是非常靈活的,因為它不需要在客戶端上安裝代碼,而且單個驅動程序能提供訪問多個數據庫。
可以將應用服務器作為一個JDBC“代理”,這意味着它會調用客戶端應用程序。因此,需要一些有關服務器配置方面的知識,這樣可以高效地使用此驅動程序類型。
應用服務器可能使用類型1,2,或4驅動程序與數據庫進行通信,了解它們的細微之處將會很有幫助。
4、類型4:100%純Java
在類型4驅動程序中,一個純粹的基於Java的驅動程序通過socket連接與供應商的數據庫進行通信。這是可用於數據庫的最高性能的驅動程序,並且通常由供應商自身提供。
這種驅動器是非常靈活的,不需要在客戶端或服務端上安裝特殊的軟件。此外,這些驅動程序是可以動態下載的。
MySQL Connector/J的驅動程序是一個類型4驅動程序。因為它們的網絡協議的專有屬性,數據庫供應商通常提供類型4的驅動程序。
三、該使用哪種驅動程序?
如果正在訪問一個數據庫,如Oracle,Sybase或IBM,首選的驅動程序是類型4。
如果Java應用程序同時訪問多個數據庫類型,類型3是首選的驅動程序。
類型2驅動程序是在數據庫沒有提供類型3或類型4驅動程序時使用的。
類型1驅動程序不被認為是部署級的驅動程序,它存在的目的通常僅用於開發和測試。