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