JDBC驅(qū)動程序在JDBC API中實現(xiàn)了已定義的接口,用于與數(shù)據(jù)庫服務(wù)器進行交互。
例如,使用JDBC驅(qū)動程序,您可以通過發(fā)送SQL或數(shù)據(jù)庫命令,然后使用Java接收結(jié)果來打開數(shù)據(jù)庫連接并與其進行交互。
JDK附帶的 Java.sql 軟件包包含各種類,這些類定義了其行為,并且其實際實現(xiàn)是在第三方驅(qū)動程序中完成的。第三方供應(yīng)商在其數(shù)據(jù)庫驅(qū)動程序中實現(xiàn) java.sql.Driver 接口。
JDBC驅(qū)動程序的實現(xiàn)因Java在其中運行的多種操作系統(tǒng)和硬件平臺而異。Sun將實現(xiàn)類型分為四類,即類型1、2、3和4,下面將對其進行解釋-
在類型1驅(qū)動程序中,JDBC橋用于訪問每臺客戶端計算機上安裝的ODBC驅(qū)動程序。使用ODBC,需要在系統(tǒng)上配置代表目標數(shù)據(jù)庫的數(shù)據(jù)源名稱(DSN)。
Java初次問世時,它是一個有用的驅(qū)動程序,因為大多數(shù)數(shù)據(jù)庫僅支持ODBC訪問,但是現(xiàn)在建議僅將這種類型的驅(qū)動程序用于實驗用途,或者在沒有其他可用代替方法的情況下。
JDK 1.2附帶的JDBC-ODBC Bridge是這種驅(qū)動程序的一個很好的實例。
在Type 2驅(qū)動程序中,JDBC API調(diào)用被轉(zhuǎn)換為數(shù)據(jù)庫獨有的本機C / C ++ API調(diào)用。這些驅(qū)動程序通常由數(shù)據(jù)庫供應(yīng)商提供,并以與JDBC-ODBC Bridge相同的方式使用。供應(yīng)商特定的驅(qū)動程序必須安裝在每臺客戶端計算機上。
如果更改數(shù)據(jù)庫,則必須更改本機API,因為它特定于數(shù)據(jù)庫,并且現(xiàn)在已經(jīng)過時了,但是使用Type 2驅(qū)動程序可以提高速度,因為它消除了ODBC的開銷。
Oracle Call Interface(OCI)驅(qū)動程序是Type 2驅(qū)動程序的示例。
在Type 3驅(qū)動程序中,使用三層方法來訪問數(shù)據(jù)庫。JDBC客戶端使用標準網(wǎng)絡(luò)套接字與中間件應(yīng)用程序服務(wù)器進行通信。然后,套接字信息由中間件應(yīng)用程序服務(wù)器轉(zhuǎn)換為DBMS所需的調(diào)用格式,并轉(zhuǎn)發(fā)給數(shù)據(jù)庫服務(wù)器。
這種驅(qū)動程序非常靈活,因為它不需要在客戶端上安裝任何代碼,并且單個驅(qū)動程序?qū)嶋H上可以提供對多個數(shù)據(jù)庫的訪問。
您可以將應(yīng)用程序服務(wù)器視為JDBC“代理”,這意味著它對客戶端應(yīng)用程序進行調(diào)用。因此,您需要一些有關(guān)應(yīng)用程序服務(wù)器配置的知識,以便有效地使用此驅(qū)動程序類型。
您的應(yīng)用程序服務(wù)器可能使用1、2或4型驅(qū)動程序與數(shù)據(jù)庫進行通信,了解細微差別將被證明是有幫助的。
在Type 4驅(qū)動程序中,基于Java的純驅(qū)動程序通過套接字連接直接與供應(yīng)商的數(shù)據(jù)庫通信。這是可用于數(shù)據(jù)庫的性能最高的驅(qū)動程序,通常由供應(yīng)商本身提供。
這種驅(qū)動程序非常靈活,您無需在客戶端或服務(wù)器上安裝特殊的軟件。此外,可以動態(tài)下載這些驅(qū)動程序。
MySQL的 Connector/J 驅(qū)動程序是Type 4驅(qū)動程序。由于其網(wǎng)絡(luò)協(xié)議的專有性質(zhì),數(shù)據(jù)庫供應(yīng)商通常提供4類驅(qū)動程序。
如果要訪問一種數(shù)據(jù)庫類型,例如Oracle,Sybase或IBM,則首選驅(qū)動程序類型4。
如果您的Java應(yīng)用程序同時訪問多種類型的數(shù)據(jù)庫,則類型3是首選驅(qū)動程序。
在您的數(shù)據(jù)庫尚無法使用3型或4型驅(qū)動程序的情況下,類型2驅(qū)動程序很有用。
類型1驅(qū)動程序不被視為部署級驅(qū)動程序,通常僅用于開發(fā)和測試目的。