JDBC與ODBC的區別與應用
談到JDBC與ODBC的區別,JDBC和ODBC其實都是用來連接數據庫的啟動程序。ODBC中文名字叫做開放數據庫互聯,是微軟技術人員開發的開放服務結構中有關數據庫的一個組成部分,它建立一組相關的規范,并提供了一組對數據庫訪問的標準應用程序編程接口。簡單的說,ODBC就是應用程序與數據庫系統進行交互的工具。一個給予ODBC的應用程序對數據庫的操作不依賴于人員的數據庫系統,不支持與數據庫管理系統打交道,所有的數據庫操作由對應的數據庫系統的ODBC驅動程序來完成。從而可以實現以同一的方式來處理所有的數據庫。
而JDBC與ODBC類似,也是一個應用程序與數據庫進行通信的中介。只是他們的開發商不同而已。JDBC是由Sun公司向關系型數據庫系統廠商提供JDBC的規格與需求;然后各大廠商遵循標準規格設計出符合自己數據庫產品的JDBC驅動程序。雖然JDBC與ODBC都可以實現類似的功能,但是他們的開發架構不同,其實現細節上也有所差異。為此數據庫管理員必須要了解這方面的差異,并在工作中根據實際情況來選擇合適的數據庫驅動程序。
JDBC與ODBC的區別:JDBC的優點。
JDBC應用程序接口是JAVA程序語言內針對數據存取所涉及的程序開發接口,其內部是由許多類與接口構成。而ODBC則是由C語言來開發的。由于兩者開發平臺的不同,為此開發不同種各自的特點也就傳遞到了這連個數據庫啟動程序中。根據筆者的了解,相對ODBC數據庫啟動程序來說,JDBC有如下幾個優點。若筆者概括的不夠全面的話,歡迎大家來補全。
1、JDBC要比ODBC容易理解。大家學過編程的也許會有一個直觀的感受,就是JAVA語言要比C語言好學的多。因為JAVA語言的設計思路是面向對象的,跟人的認識思維比較接近,為此比較容易被人接受,學習起來也相對輕松一點。而C語言則就比較抽象了,跟人的認識規律有一定的距離。為此他們開發出來的產品也有類似的特點。在ODBC中,雖然可以實現與數據庫的交互,但是實現起來比較復雜。如一個簡單的查詢,也需要分為好幾塊內容;而在ODBC驅動程序內部再去進行整合,進行一些復雜的操作。這不僅降低了數據庫啟動程序的性能,而且也給程序開發者開發應用程序帶來了一定的負面影響。而JDBC數據庫啟動程序在設計的時候就包含了大部分基本數據操作功能,為此在編寫一些常規的數據庫操作語句時,如查詢、更新等等,其所需要的代碼比ODBC要少的多。故從這方面來說,JDBC數據庫啟動程序要比ODBC容易理解。
2、JDBC數據庫驅動程序是面向對象的,完全遵循JAVA語言的優良特性。通常情況下,只要有JAVA車功能需設計基礎的用戶都可以在最短時間內了解JDBC驅動程序的架構,比較容易上手,可以輕而易舉的開發出強悍的數據庫應用程序。而ODBC的話,由于其內部功能復雜,代碼編寫要求高。為此即使是一個C語言的高手,仍然需要花費不少的時間去了解這個數據庫啟動程序;在編寫代碼的時候,還離不開相關的參考書籍。
3、JDBC的移植性要比ODBC要好。通常情況下,安裝完ODBC驅動程序之后,還需要經過一定的配置才能夠使用。而不同的配置在不同數據庫服務器之間不能夠通用。也就是說,裝一次需要配置一次。但是JDBC數據庫驅動程序則不同。如果采用JDBC數據庫驅動程序的話,則知需要選擇適當的JDBC數據庫驅動程序,就不需要進行額外的配置。在安裝過程中,JDBC數據庫驅動程序會自己完成相關的配置。為此JDBC的移植性要比ODBC要好。
總之JDBC與ODBC都是數據庫的啟動程序,它們的本質是相同的,都是為了處理SQL語句而設計的。而且JDBC在設計的時候,其也是在ODBC的基礎上進行設計的,并保留了ODBC數據庫驅動程序的部分功能。或者說,我們可以把JDBC看作是ODBC的另一個高級版本也未嘗不可。JDBC主要在操作上、友好性上做了一定的改進。
JDBC與ODBC的區別:什么時候采用JDBC?
雖然說JDBC數據庫啟動程序比ODBC來說具有不少的優點,但是也并不是說在所有的情況下采用JDBC數據庫啟動程序都能夠起到不錯的效果。數據庫管理員還需要根據企業的實際應用環境來進行選擇。通常情況下,如果符合下面幾種情況的任何一種,筆者建議采用JDBC數據庫驅動程序。
一是采用Oracle公司的Oracle JDeveloper 10G來開發應用程序。JDeveloper 10G是Oracle公司提供的一個可視化的開發環境??梢詭椭鷶祿旃芾韱T與開發人員方便的完成一些復雜的功能。如數據庫開發人員可以借這個工具來設計WEB應用程序的網頁執行流程;如可以用來開發業務服務層組件;如可以在JSP與JClient應用程序內實現數據綁定功能等等。特別是在利用這個工具開發業務服務層組件的時候,可以直接瀏覽與存取業務組件所對應的數據。數據庫開發人員不用等到應用程序撰寫好后才測試數據庫的存取功能。顯然這個特性讓數據庫開發人員在開發數據庫應用程序的時候格外的便利。而為了配合這個開發工具,Oracle公司專門開發了對應的JDBC驅動程序。為此如果數據庫開發人員采用JDeveloper開發工具的話,那么采用JDBC要比采用ODBC的兼容性要好。所以如果采用了這種開發工具的話,***能夠采用JDBC數據庫啟動程序。
二是如果應用程序采用的是JAVA開發平臺的話,那么***使用JDBC數據庫啟動程序。其實JDeveloper采用的也是JAVA開發平臺。這主要是因為如果JAVA程序直接調用ODBC的C語言應用程序接口時,比較容易產生安全方面的問題。如Java語言是不采用指針的(因為指針的處理效率比較慢),而ODBC所采用的C語言卻使用了大量的指針。為此如果使用JAVA語言平臺來開發數據庫應用程序,若采用ODBC數據庫驅動程序的話,就不那么合適了。另外由于JDBC也是JAVA語言開發的,所以其兼容性也會好許多。為此筆者建議,如果數據庫開發人員采用的是JAVA語言開發平臺的話,那么***采用JDBC驅動程序,而不是ODBC驅動程序。
在其他的情況下,數據庫管理員與開發人員可以根據自己的習慣來選擇合適的數據庫驅動程序。
JDBC與ODBC的區別:能否從ODBC順利過渡到JDBC?
也許數據庫管理員以前采用的是ODBC驅動程序,而如果數據庫管理員現在需要采用JDBC驅動程序,那么能否實現順利過渡呢?答案是肯定的。在JDBC驅動程序中有一類叫作JDBC-ODBC橋接啟動程序。這種類型的JDBC數據庫驅動程序其底層是通過ODBC驅動程序來連接數據庫的。如果原先的應用程序是基于ODBC數據庫驅動程序的,或者數據庫沒有提供對應的JDBC驅動程序,則數據庫管理員可以利用JDBC-ODBC橋接驅動程序來實現。也就是說,橋接驅動程序可以利用現有的ODBC驅動程序來存取關系型數據庫。為此者不僅可以保留先前的開發架構(通過ODBC來存取數據),還可以立即使用JAVA作為新的開發環境,從而實現ODBC數據庫驅動程序到JDBC的順利轉型。
不過在采用這種橋接驅動程序的時候,需要注意幾個問題。一是這個橋接驅動程序仍然需要用到ODBC數據庫驅動程序。因為橋接驅動程序直接聯系的對象是ODBC驅動程序,然后再通過ODBC驅動程序去訪問數據庫。為此在客戶端必須先安裝并配置好ODBC驅動程序。如果采用的是三層式的開發結構,也需要安裝ODBC驅動程序。其次,在這種模式下,應用程序先調用JDBC,然后再通過JDBC調用ODBC,***再跟數據庫進行通信。顯然其中間多了幾個環節。由于其中間環節比較多,但數據訪問出現問題的時候,就不怎么好查問題。這就好像一道水管,如果中間的接口多了的話,則發生漏水的幾率就比較高。如果真的發生漏水的話,則查詢漏水點的時候也會比較困難。為此筆者認為,采用橋接類型的JDBC驅動程序只是權宜之計。在適當的時候,數據庫開發人員還是需要調整原先的開發架構,全部都轉到JDBC驅動程序上來。橋接程序只是為數據庫開發人員爭取一定的時間。雖然這個轉型過程中的陣痛是比較痛的,但確是不可避免的。長痛不如短痛,筆者建議數據庫開發人員還是及早進行過渡為好。并在可能的情況下,把以前的開發架構也進行調整,以采用真正意義上的JDBC驅動程序。
【編輯推薦】