文章詳情頁
關(guān)于jdbc的1,2,3,4.
瀏覽:120日期:2024-06-24 09:10:26
內(nèi)容: 關(guān)于jdbc的1,2,3,4.flyblue轉(zhuǎn)載自java技?[2000-11-16]題目中所說的'1,2,3,4' 實際上是指jdbc驅(qū)動的四種類型.本文將對jdbc driver 的四種類型以及不同類型的driver適合于哪種層次的應(yīng)用做一個簡單介紹, 如果你現(xiàn)在正準(zhǔn)備開發(fā)有關(guān)數(shù)據(jù)庫的java應(yīng)用,你也許會需要從網(wǎng)上下載相關(guān)數(shù)據(jù)庫的jdbc driver .在下載網(wǎng)頁上你可能會發(fā)現(xiàn)這樣的說明'this is a type 4 drvier'或this is type 3 driver那 么到底應(yīng)該下載哪一個,下載后的driver是否適合我們要開發(fā)的應(yīng)用呢?還是讓我們先解釋 一下這四種類型的具體含義吧。 type 1:jdbc-odbc橋 type 2:本地api驅(qū)動 type 3:網(wǎng)絡(luò)協(xié)議驅(qū)動 type 4:本地協(xié)議驅(qū)動 Type 1: jdbc-odbc橋 Jdbc-odbc 橋 是sun公司提供的,是jdk提供的的標(biāo)準(zhǔn)api. 這種類型的驅(qū)動實際是把所有 jdbc的調(diào)用傳遞給odbc ,再由odbc調(diào)用本地數(shù)據(jù)庫驅(qū)動代碼.( 本地數(shù)據(jù)庫驅(qū)動代碼是指 由數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫操作二進(jìn)制代碼庫,例如在oracle for windows中就是oci dll 文 件) jdbc-odbc橋 | odbc | 廠商DB代碼---------------數(shù)據(jù)庫Server (圖一) 只要本地機(jī)裝有相關(guān)的odbc驅(qū)動那么采用jdbc-odbc橋幾乎可以訪問所有的數(shù)據(jù)庫,jdbc- odbc方法對于客戶端已經(jīng)具備odbc driver的應(yīng)用還是可行的.但是,由于jdbc-odbc先調(diào)用 odbc再由odbc去調(diào)用本地數(shù)據(jù)庫接口訪問數(shù)據(jù)庫.所以,執(zhí)行效率比較低,對于那些大數(shù)據(jù)量 存取的應(yīng)用是不適合的.而且,這種方法要求客戶端必須安裝odbc 驅(qū)動,所以對于基于 internet ,intranet的應(yīng)用也是不合適的.因為,你不可能要求所有客戶都能找到odbc driver. Type 2: 本地Api驅(qū)動 本地api驅(qū)動直接把jdbc調(diào)用轉(zhuǎn)變?yōu)閿?shù)據(jù)庫的標(biāo)準(zhǔn)調(diào)用再去訪問數(shù)據(jù)庫.這種方法需要本地 數(shù)據(jù)庫驅(qū)動代碼. 本地api驅(qū)動 | 廠商DB代碼---------------數(shù)據(jù)庫Server (圖二) 這種驅(qū)動比起jdbc-odbc橋執(zhí)行效率大大提高了.但是,它仍然需要在客戶端加載數(shù)據(jù)庫廠商 提供的代碼庫.這樣就不適合基于internet的應(yīng)用.并且,他的執(zhí)行效率比起3,4型的jdbc驅(qū)動 還是不夠高. Type3:網(wǎng)絡(luò)協(xié)議驅(qū)動 這種驅(qū)動實際上是根據(jù)我們熟悉的三層結(jié)構(gòu)建立的. jdbc先把對數(shù)局庫的訪問請求傳遞給網(wǎng) 絡(luò)上的中間件服務(wù)器. 中間件服務(wù)器再把請求翻譯為符合數(shù)據(jù)庫規(guī)范的調(diào)用,再把這種調(diào)用 傳給數(shù)據(jù)庫服務(wù)器.如果中間件服務(wù)器也是用java開法的,那么在在中間層也可以使用1,2型 jdbc驅(qū)動程序作為訪問數(shù)據(jù)庫的方法. 網(wǎng)絡(luò)協(xié)議驅(qū)動---------中間件服務(wù)器------------數(shù)據(jù)庫Server ( 圖三) 由于這種驅(qū)動是基于server的.所以,它不需要在客戶端加載數(shù)據(jù)庫廠商提供的代碼庫.而且 他在執(zhí)行效率和可升級性方面是比較好的.因為大部分功能實現(xiàn)都在server端,所以這種驅(qū)動 可以設(shè)計的很小,可以非常快速的加載到內(nèi)存中. 但是,這種驅(qū)動在中間件層仍然需要有配置 其它數(shù)據(jù)庫驅(qū)動程序,并且由于多了一個中間層傳遞數(shù)據(jù),它的執(zhí)行效率還不是最好. Type4 本地協(xié)議驅(qū)動 這種驅(qū)動直接把jdbc調(diào)用轉(zhuǎn)換為符合相關(guān)數(shù)據(jù)庫系統(tǒng)規(guī)范的請求.由于4型驅(qū)動寫的應(yīng)用可 以直接和數(shù)據(jù)庫服務(wù)器通訊.這種類型的驅(qū)動完全由java實現(xiàn),因此實現(xiàn)了平臺獨(dú)立性. 本地協(xié)議驅(qū)動---------數(shù)據(jù)庫Server ( 圖四) 由于這種驅(qū)動不需要先把jdbc的調(diào)用傳給odbc或本地數(shù)據(jù)庫接口或者是中間層服務(wù)器.所 以它的執(zhí)行效率是非常高的.而且,它根本不需要在客戶端或服務(wù)器端裝載任何的軟件或驅(qū)動. 這種驅(qū)動程序可以動態(tài)的被下載.但是對于不同的數(shù)據(jù)庫需要下載不同的驅(qū)動程序. 以上對四種類型的jdbc驅(qū)動做了一個說明.那么它們適合那種類型的應(yīng)用開發(fā)呢? Jdbc-odbc橋由于它的執(zhí)行效率不高,更適合做為開發(fā)應(yīng)用時的一種過度方案,或著對于初學(xué) 者了解jdbc編程也較適用. 對于那些需要大數(shù)據(jù)量操作的應(yīng)用程序則應(yīng)該考慮2,3,4型驅(qū)動.在intranet方面的應(yīng)用可以 考慮2型驅(qū)動,但是由于3,4型驅(qū)動在執(zhí)行效率上比2型驅(qū)動有著明顯的優(yōu)勢,而且目前開發(fā) 的趨勢是使用純java.所以3,4型驅(qū)動也可以作為考慮對象. 至于基于internet方面的應(yīng)用就只有考慮3,4型驅(qū)動了. 因為3型驅(qū)動可以把多種數(shù)據(jù)庫驅(qū) 動都配置在中間層服務(wù)器.所以3型驅(qū)動最適合那種需要同時連接多個不同種類的數(shù)據(jù)庫, 并且對并發(fā)連接要求高的應(yīng)用. 4型驅(qū)動則適合那些連接單一數(shù)據(jù)庫的工作組應(yīng)用. 說了這么多,那么相關(guān)的jdbc驅(qū)動應(yīng)該在哪里下載呢?實際上各大數(shù)據(jù)庫廠商 (oracle,sybase,db2)對jdbc多都有很好的支持(微軟例外).你可以到他們的官方站點(diǎn)去下載. 由于微軟一直沒有開發(fā)sqlserver的jdbc驅(qū)動,所以只好用其他廠商提供的驅(qū)動.這里向大家 推薦幾個站點(diǎn) http://www.idssoftware.com/jdbcdrv.html (3型) http://www.jturbo.com/ (4型) http://www.inetsoftware.de/(4型) 特別推薦I-net Sprinta 2000 的sqlserver驅(qū)動,因為他的驅(qū)動只有47K沒有時間限制,并且是4 型驅(qū)動. 對于在編程時如何用JDBC建立連接,本文就不做詳細(xì)介紹了.讀者可以在jdk中找到例子,目 錄為jdk/demo/jfc/dbdemos. 如果你下載其他廠商的驅(qū)動程序在壓縮文件中會有例子. 如果你在applet中調(diào)用jdbc驅(qū)動訪問數(shù)據(jù)庫一定要注意web server和 數(shù)據(jù)庫 server一定 要在同一臺機(jī)器.這是java applet 安全規(guī)范所要求的. Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽:
JDBC
相關(guān)文章:
1. 關(guān)于XSL - XSL教程2. 關(guān)于JavaScript的Array數(shù)組方法詳解3. Redis Java Lettuce驅(qū)動框架原理解析4. 關(guān)于Python字符串顯示u...的解決方式5. 關(guān)于JSP用戶登錄連接數(shù)據(jù)庫詳情6. 詳解SpringBoot中關(guān)于%2e的Trick7. 聊一聊關(guān)于php源碼中refcount的疑問8. 關(guān)于JavaScript對象類型之Array及Object9. 關(guān)于多種方式完美解決Python pip命令下載第三方庫的問題10. 關(guān)于HTML5的img標(biāo)簽
排行榜

網(wǎng)公網(wǎng)安備