關於四種JDBC驅動類型的區別

Type1     JDBC-ODBC橋   
  作爲JDK1.1後的一部分,是sun.jdbc.odbc包的一部分   
  Application--->JDBC-ODBC     Bridge(Type1     jdbc     driver)---->JDBC-ODBC     Library--->ODBC     Driver-->Database   
  適用於快速的原型系統,沒有提供JDBC驅動的數據庫如Access   
   
  Type2     JAVA     to     Native     API   
  利用開發商提供的本地庫來直接與數據庫通信。   
  Application--->JDBC     Driver(Type2     jdbc     driver)---->Native     Database     library---->Database   
  比Type1性能略好。   
   
  Type3     Java     to     net   
  Application--->Jdbc     Driver(Type3     jdbc     driver)----->java     middleware--->JDBC     Driver---->Database   
  具有最大的靈活性,通常由那些非數據庫廠商提供,是四種類型中最小的。   
   
  Type4     JAVA     to     native     dababase   
  Application--->Jdbc     driver(type4     jdbc     driver)----->database     engine--->database   
  最高的性能,通過自己的本地協議直接與數據庫引擎通信,具備在Internet裝配的能力。
關於jdbc的1,2,3,4.     
  作者:bluewind     
   
  題目中所說的/"1,2,3,4/"   實際上是指jdbc驅動的四種類型.本文將對jdbc   driver   的四種類型以及不同類型的driver適合於哪種層次的應用做一個簡單介紹,   如果你現在正準備開發有關數據庫的java應用,你也許會需要從網上下載相關數據庫的jdbc   driver   .在下載網頁上你可能會發現這樣的說明/"this   is   a   type   4   drvier/"或this   is   type   3   driver那     
  麼到底應該下載哪一個,下載後的driver是否適合我們要開發的應用呢?還是讓我們先解釋   一下這四種類型的具體含義吧。     
  type   1:jdbc-odbc橋     
  type   2:本地api驅動     
  type   3:網絡協議驅動     
  type   4:本地協議驅動     
   
  Type   1:   jdbc-odbc橋     
  Jdbc-odbc   橋   是sun公司提供的,是jdk提供的的標準api.   這種類型的驅動實際是把所有     
  jdbc的調用傳遞給odbc   ,再由odbc調用本地數據庫驅動代碼.(   本地數據庫驅動代碼是指     
  由數據庫廠商提供的數據庫操作二進制代碼庫,例如在oracle   for   windows中就是oci   dll   文     
  件)     
   
  jdbc-odbc橋     
  |     
  odbc     
  |     
  廠商DB代碼---------------數據庫Server     
   
  (圖一)     
   
  只要本地機裝有相關的odbc驅動那麼採用jdbc-odbc橋幾乎可以訪問所有的數據庫,jdbc-     
  odbc方法對於客戶端已經具備odbc   driver的應用還是可行的.但是,由於jdbc-odbc先調用     
  odbc再由odbc去調用本地數據庫接口訪問數據庫.所以,執行效率比較低,對於那些大數據量     
  存取的應用是不適合的.而且,這種方法要求客戶端必須安裝odbc   驅動,所以對於基於     
  internet   ,intranet的應用也是不合適的.因爲,你不可能要求所有客戶都能找到odbc   driver.     
   
  Type   2:   本地Api驅動     
  本地api驅動直接把jdbc調用轉變爲數據庫的標準調用再去訪問數據庫.這種方法需要本地     
  數據庫驅動代碼.     
   
  本地api驅動     
  |     
  廠商DB代碼---------------數據庫Server     
   
  (圖二)     
  這種驅動比起jdbc-odbc橋執行效率大大提高了.但是,它仍然需要在客戶端加載數據庫廠商     
  提供的代碼庫.這樣就不適合基於internet的應用.並且,他的執行效率比起3,4型的jdbc驅動     
  還是不夠高.     
   
  Type3:網絡協議驅動     
  這種驅動實際上是根據我們熟悉的三層結構建立的.   jdbc先把對數局庫的訪問請求傳遞給網     
  絡上的中間件服務器.   中間件服務器再把請求翻譯爲符合數據庫規範的調用,再把這種調用     
  傳給數據庫服務器.如果中間件服務器也是用java開法的,那麼在在中間層也可以使用1,2型     
  jdbc驅動程序作爲訪問數據庫的方法.     
   
  網絡協議驅動---------中間件服務器------------數據庫Server     
  (   圖三)     
   
  由於這種驅動是基於server的.所以,它不需要在客戶端加載數據庫廠商提供的代碼庫.而且     
  他在執行效率和可升級性方面是比較好的.因爲大部分功能實現都在server端,所以這種驅動     
  可以設計的很小,可以非常快速的加載到內存中.   但是,這種驅動在中間件層仍然需要有配置     
  其它數據庫驅動程序,並且由於多了一箇中間層傳遞數據,它的執行效率還不是最好.     
   
   
  Type4   本地協議驅動     
  這種驅動直接把jdbc調用轉換爲符合相關數據庫系統規範的請求.由於4型驅動寫的應用可     
  以直接和數據庫服務器通訊.這種類型的驅動完全由java實現,因此實現了平臺獨立性.     
   
  本地協議驅動---------數據庫Server     
  (   圖四)     
   
  由於這種驅動不需要先把jdbc的調用傳給odbc或本地數據庫接口或者是中間層服務器.所     
  以它的執行效率是非常高的.而且,它根本不需要在客戶端或服務器端裝載任何的軟件或驅動.     
  這種驅動程序可以動態的被下載.但是對於不同的數據庫需要下載不同的驅動程序.     
   
   
  以上對四種類型的jdbc驅動做了一個說明.那麼它們適合那種類型的應用開發呢?     
  Jdbc-odbc橋由於它的執行效率不高,更適合做爲開發應用時的一種過度方案,或着對於初學     
  者瞭解jdbc編程也較適用.     
  對於那些需要大數據量操作的應用程序則應該考慮2,3,4型驅動.在intranet方面的應用可以     
  考慮2型驅動,但是由於3,4型驅動在執行效率上比2型驅動有着明顯的優勢,而且目前開發     
  的趨勢是使用純java.所以3,4型驅動也可以作爲考慮對象.     
  至於基於internet方面的應用就只有考慮3,4型驅動了.   因爲3型驅動可以把多種數據庫驅     
  動都配置在中間層服務器.所以3型驅動最適合那種需要同時連接多個不同種類的數據庫,     
  並且對併發連接要求高的應用.   4型驅動則適合那些連接單一數據庫的工作組應用.     
   
  說了這麼多,那麼相關的jdbc驅動應該在哪裏下載呢?實際上各大數據庫廠商     
  (oracle,sybase,db2)對jdbc多都有很好的支持(微軟例外).你可以到他們的官方站點去下載.     
  由於微軟一直沒有開發sqlserver的jdbc驅動,所以只好用其他廠商提供的驅動.這裏向大家     
  推薦幾個站點     
  http://www.idssoftware.com/jdbcdrv.html   (3型)     
  http://www.jturbo.com/   (4型)     
  http://www.inetsoftware.de/(4型)     
  特別推薦I-net   Sprinta   2000   的sqlserver驅動,因爲他的驅動只有47K沒有時間限制,並且是4     
  型驅動.     
   
  對於在編程時如何用JDBC建立連接,本文就不做詳細介紹了.讀者可以在jdk中找到例子,目     
  錄爲jdk/demo/jfc/dbdemos.   如果你下載其他廠商的驅動程序在壓縮文件中會有例子.     
  如果你在applet中調用jdbc驅動訪問數據庫一定要注意web   server和   數據庫   server一定     
  要在同一臺機器.這是java   applet   安全規範所要求的.  
第一種方式:通過數據庫本身的JDBC   Driver連接到數據庫     
   
  Classs.forName("oracle.jdbc.driver.OracleDriver");     
   
  Connection   conn   =   DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.33:1521:huihoo","scott","tiger");     
   
  第二種方式:通過JDBC-ODBC橋連接到數據庫     
   
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");     
   
  Connection   conn   =   DriverManager.getConnection("jdbc:odbc:192.168.1.33","scott","tiger");     
   
  192.168.1.33爲數據源     
   
  完整的用戶登錄     
   
  Properties   props   =   new   Properties();     
   
  props.put("user",   "scott");     
   
  props.put("password",   "tiger");     
   
  Driver   myDriver   =   (Driver)   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();     
   
  conn   =   myDriver.connect("jdbc:oracle:thin:@192.168.1.33:1521:huihoo",   props);     
   
  conn.close();     
   
  System.out.println("成功登錄.");     
   
  System.out.println("歡迎您   "+props.getProperty("user")+"!");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章