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