国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

選擇合適的JDBC驅動程序

2019-11-18 12:39:56
字體:
來源:轉載
供稿:網友

  假如你不了解JDBC驅動程序各個特性指標的具體含義,或者不了解到底哪些特性才值得重視,要從大量的驅動程序中選擇最合適的一個并不輕易。本文將助你一臂之力。
  概述
  說到數據庫驅動程序,可以借用喜劇演員Rodney Dangerfield的一句話:“勿以等閑視之”。許多開發者認為驅動程序只是一些功能確定且無足輕重的工具,但事實上,驅動程序往往不是數據轉換器或數據管道那么簡單,它們的有些特性極其重要,既影響著應用的性能,也影響著應用的功能發揮。
  
  java開發者經常需要訪問包括關系數據庫在內的各種各樣的數據源,JDBC驅動程序利用JDBC標準建立起了Java程序和數據源之間的橋梁。在JDBC出現之前,Java開發者為了構造帶有數據庫事務的應用,不得不沉陷于各種復雜的SQL語句。為了解決這個問題,Sun和它的合作者開發出了簡化Java應用訪問各種數據資源的JDBC API。
  
  一進入JDBC驅動程序的世界,你很快會有一種眼花繚亂的感覺:可供選擇的驅動程序實在太多了!雖然擁有選擇的權利是一件好事,但是,舉例來說,Sun網站上列出了160多個JDBC驅動程序,卻沒有具體說明究竟哪一個驅動程序更好,好在哪里?雖然根據說明,每一個驅動程序都支持某些重要的功能集,但還有一個問題有待回答:在一個具體的環境中,這些不同驅動程序支持的功能集到底有什么意義?這就是本文要討論的問題。
  
  我們往返顧一些JDBC標準和驅動程序的基礎知識。首先,JDBC提供了完成下列基本任務的方法:
  
  ● 以URL或注冊到JNDI名稱服務的DataSource對象為基礎,創建和治理數據源連接。因此,客戶端不必進行復雜的配置。
  
  ● 構造SQL命令,向數據源發送SQL命令。
  
  ● 提取和處理返回給Java應用或Applet的結果集。
  
  JDBC把Java數據庫調用轉換成訪問表格式數據源的SQL語句。這些數據源既包括企業級的SQL數據庫系統,例如Oracle、SQL Server、IBM UDB、Informix、Sybase等等,也有電子表格和扁平文件的數據源,如CSV、TSV和大型機數據文件。有了JDBC,我們就可以用單一的命令更新多個字段、在單個事務中處理多個數據源(表)。這意味著:
  
  ● 可以通過批量處理優化數據訪問性能。
  
  ● JDBC提供了訪問不同數據庫產品的公共框架,不管這些數據庫系統本身是否具有互操作能力。
  
  ● 為數據源提供了一個抽象層,當數據源類型發生變化時,修改數據源定義變得更加簡單。
  
  假如客戶程序要調用的軟件或中間層服務器要調用的中間件不屬于開發者控制范圍,JDBC提供了通過Internet訪問數據源的能力。JDBC充分發揮了Java可移植、自包含的特性,避免了僅僅由于平臺、環境的不同而為同一個應用提供多個版本的必要。
  JDBC規范以及驅動程序分類
  現在我們來看看JDBC規范。JDBC規范歷史上經歷了幾次重大的版本更新:
  ● JDBC 1.0:提供基本的功能,強調易用性。
  ● JDBC 2.0:提供更多高級功能以及服務器端的處理能力。
  
  ● JDBC 3.0:完善了API,優化性能。改進了連接池、語句緩沖機制,提供了向Sun連接器體系的遷移途徑。
  
  一些在JDBC 2.0規范中可選的功能,例如分布式事務,在JDBC 3.0規范中是必需的。同時,JDBC 3.0還定義了一些新的特性,例如在緩沖池中緩沖經過預處理的命令等。
  
  最初的Java語言規范并沒有規定Java程序如何訪問數據庫。但不久之后,Sun和它的合作者就開始填補這個空白。早期的Java數據訪問策略依靠于建立通向ODBC(ODBC是Microsoft發起的數據源訪問標準)的橋梁,結果就是JDBC-ODBC橋接驅動程序。今天,JDBC驅動程序總共有四種類型:
  
  第一類:JDBC-ODBC橋,再加上ODBC驅動程序。
  
  第二類:本機API,部分是Java的驅動程序。
  
  第三類:面向數據庫中間件的純Java驅動程序。
  
  第四類:直接面向數據庫的純Java驅動程序。
  
  第三、四兩類都是純Java的驅動程序,因此,對于Java開發者來說,它們在性能、可移植性、功能等方面都有優勢。
  
  第一類
  
  第一類JDBC驅動程序是JDBC-ODBC橋再加上一個ODBC驅動程序。Sun建議第一類驅動程序只用于原型開發,而不要用于正式的運行環境。橋接驅動程序由Sun提供,它的目標是支持傳統的數據庫系統。Sun為該軟件提供要害問題的補丁,但不為該軟件的最終用戶提供支持。一般地,橋接驅動程序用于已經在ODBC技術上投資的情形,例如已經投資了Windows應用服務器。
  
  盡管Sun提供了JDBC-ODBC橋接驅動程序,但由于ODBC會在客戶端裝載二進制代碼和數據庫客戶端代碼,這種技術不適用于高事務性的環境。另外,第一類JDBC驅動程序不支持完整的Java命令集,而是局限于ODBC驅動程序的功能。
  
  第二類
  
  第二類JDBC驅動程序是本機API的部分Java代碼的驅動程序,用于把JDBC調用轉換成主流數據庫API的本機調用。這類驅動程序也存在與第一類驅動程序一樣的性能問題,即客戶端載入二進制代碼的問題,而且它們被綁定了特定的平臺。
  第二類驅動程序要求編寫面向特定平臺的代碼,這對于任何Java開發者來說恐怕都不屬于真正樂意做的事情。主流的數據庫廠商,例如Oracle和IBM,都為它們的企業數據庫平臺提供了第二類驅動程序,使用這些驅動程序的開發者必須及時跟進不同數據庫廠商針對不同操作系統發行的各個驅動程序版本。
  
  另外,由于第二類驅動程序沒有使用純Java的API,把Java應用連接到數據源時,往往必須執行一些額外的配置工作。很多時候,第二類驅動程序不能在體系結構上與大型主機的數據源兼容;即使做到了兼容,效果也是差強人意。
  
  由于諸如此類的原因,大多數Java數據庫開發者選擇第三類驅動程序,或者選擇更靈活的第四類純Java新式驅動程序。
   選擇合適的JDBC驅動程序(圖一)
  圖一:第1、2兩類驅動程序的體系比較
  第三類
  第三類JDBC驅動程序是面向數據庫中間件的純Java驅動程序,JDBC調用被轉換成一種中間件廠商的協議,中間件再把這些調用轉換到數據庫API。第三類JDBC驅動程序的優點是它以服務器為基礎,也就是不再需要客戶端的本機代碼,這使第三類驅動程序要比第一、二兩類快。另外,開發者還可以利用單一的驅動程序連接到多種數據庫。
  
  第四類
  
  第四類JDBC驅動程序是直接面向數據庫的純Java驅動程序,即所謂的“瘦”(thin)驅動程序,它把JDBC調用轉換成某種直接可被DBMS使用的網絡協議,這樣,客戶機和應用服務器可以直接調用DBMS服務器。對于第四類驅動程序,不同DBMS的驅動程序不同。因此,在一個異構計算環境中,驅動程序的數量可能會比較多。但是,由于第四類驅動程序具有較高的性能,能夠直接訪問DBMS,所以這一問題就不那么突出了。
   選擇合適的JDBC驅動程序(圖二)
  圖二:第3、4兩類驅動程序的體系比較
  選擇JDBC驅動程序
  Sun在http://industry.java.sun.com/PRodUCts/jdbc/drivers維護著一個JDBC驅動程序的清單,如圖三所示。這個頁面提供了一個驅動程序選擇工具,能夠根據指定的特征顯示出符合要求的驅動程序,答應指定的特征包括驅動程序類型、支持的JDBC版本、支持的數據庫等等。今天(2002年09月),這個頁面收集的驅動程序已經達到165個!
  
  許多人用這個選擇工具來確定自己要用的驅動程序。所以,有必要具體介紹一下這個選擇工具:
  
  ● JDBC API Version:選擇JDBC版本,可從1.x、2.x或3.x中任選一種。
  
  ● Certified for J2EE:J2EE認證,可選擇J2EE 1.3或J2EE 1.2(其中之一或全部)。
  
  ● Driver Type:驅動程序類型,1、2、3或4,任意一種或全部。
  
  ● Supported DBMS:支持的DBMS,有83個選項,大部分是各廠商的數據庫產品,但也有一部分是產業標準,例如JDBC、LDAP、ODBC、OLE DB Provider、Text(TSV)、SQL/DS,以及xml。可選擇一個或多個。
  
  ● Required Features:必需的特性,包括DataSource、連接池(Conn. Pooling)、分布式事務(Dist. Trans.)、記錄集(RowSets),可任選一個或者多個。
  
  ● Returns per page:每頁返回的結果數量。
  選擇合適的JDBC驅動程序(圖三)
  圖三:Sun的JDBC驅動程序選擇工具
  下面我們來看看各個選項分別有哪些意義。
  JDBC API
  JDBC API的重要性在于,它決定了Java開發者可用的功能。早期的Java應用可能無法使用JDBC 3.0提供的許多高級特性,但這些特性對于高事務性、分布式的應用來說必不可少。使用最新版本的JDBC API,開發者才能使用各種新的DBMS和操作系統安全擴展,以及諸如連接池、語句緩沖池、RowSets對象等最新的性能優化機制。
  
  J2EE認證
  
  記住,JDBC只是一個規范,而不是一個軟件的標準實現。各個廠商可以根據需要實現自己的JDBC驅動程序。有一些驅動程序完全遵從J2EE規范,還有許多驅動程序不遵從J2EE規范。JDBC驅動程序的J2EE認證(即獲取Certified for J2EE logo)由Sun的CTS(Certification Test Suite)確定,假如要判定一種驅動程序是否比另一種優秀,它可以作為判定驅動程序質量的標準之一。一般我們可以認為,通過這種認證的廠商對產品質量比較關注,在http://java.sun.com/products/jdbc/industry.Html可以找到一個擁有相關產品且認可(Endorse)JDBC標準的廠商清單。
  
  必需的特性
  
  圖三Required Features部分提供了幾個JDBC驅動程序的特性選項,這些特性在JDBC 2.0規范中開始

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜章县| 苗栗市| 平远县| 绥芬河市| 浑源县| 浦江县| 左贡县| 攀枝花市| 云霄县| 九龙坡区| 四川省| 福贡县| 汉源县| 威信县| 北流市| 聂拉木县| 治多县| 东海县| 南郑县| 凤城市| 德江县| 通道| 金寨县| 印江| 公主岭市| 舟曲县| 海城市| 青冈县| 灵川县| 广灵县| 红桥区| 康定县| 平阳县| 通化市| 林芝县| 吐鲁番市| 启东市| 吉水县| 阿坝县| 兴仁县| 平阴县|