亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

選擇合適的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??蛇x擇一個或多個。
  
  ● 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規范中開始

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人涩涩涩视频在线观看| 国产精品嫩草影院一区二区| 日韩激情第一页| 亚洲视频一区二区| 精品久久久999| 亚洲乱码国产乱码精品精天堂| 日韩高清不卡av| 欧美巨大黑人极品精男| 国产精品日韩欧美大师| 欧美成人国产va精品日本一级| 78m国产成人精品视频| 国产一区深夜福利| 国产免费一区二区三区在线观看| 久久精品国产一区| 久久久av亚洲男天堂| 亚洲欧美制服综合另类| 国产成人精品视频在线| 国产精品免费久久久久久| 色狠狠av一区二区三区香蕉蜜桃| 91精品国产高清自在线看超| 亚洲国产成人在线视频| 欧美疯狂xxxx大交乱88av| 欧美精品日韩www.p站| 国产精品国产三级国产aⅴ9色| 亚洲综合中文字幕在线| 欧美黑人性猛交| 亚洲欧美日韩中文在线| 91在线视频成人| 97在线观看视频| 亚洲第一国产精品| 亚洲在线视频福利| 亚洲欧美制服另类日韩| 国产精品男人的天堂| 国产噜噜噜噜噜久久久久久久久| 九九视频这里只有精品| 九九九久久久久久| 欧美日韩国产999| 最近2019中文字幕第三页视频| 亚洲毛片在线观看.| 精品小视频在线| 91网在线免费观看| 成人免费视频网| 97免费视频在线| 91成人天堂久久成人| 在线观看视频亚洲| 亚洲最新av在线网站| 亚洲人成77777在线观看网| 91免费的视频在线播放| xvideos成人免费中文版| 九九热r在线视频精品| 久久久久久久久久久成人| 国产欧美韩国高清| 97成人超碰免| 亚洲直播在线一区| 国产日韩欧美黄色| 69视频在线免费观看| 欧美午夜电影在线| 欧美黑人性猛交| 国产精品久久一区主播| 国产成人精品一区二区| 日韩欧美在线视频| 91亚洲午夜在线| 亚洲四色影视在线观看| 欧美极品美女视频网站在线观看免费| 亚洲天堂2020| 欧美特级www| 91视频九色网站| 播播国产欧美激情| 国产91热爆ts人妖在线| 91在线观看免费| 日本精品在线视频| 久久亚洲精品一区二区| 日韩欧美在线免费| 成人黄色av免费在线观看| 日韩福利在线播放| 亚洲第一网站免费视频| 国产精品夜色7777狼人| 欧美韩日一区二区| 久久久久www| 色久欧美在线视频观看| 欧美日韩国产在线播放| 欧美性生交大片免网| 97超级碰碰碰| 亚洲第一天堂无码专区| 国产精品一区二区3区| 95av在线视频| 精品magnet| 国产精品99久久久久久人| 亚洲欧美综合图区| 91精品国产91久久久久久久久| 久久久久99精品久久久久| 日韩在线一区二区三区免费视频| 国产欧美精品日韩精品| 国产欧美精品在线| 欧美中文字幕在线观看| 久久精品91久久香蕉加勒比| 色狠狠久久aa北条麻妃| 在线观看91久久久久久| 疯狂欧美牲乱大交777| 亚洲国产中文字幕久久网| 成人久久18免费网站图片| 日韩av成人在线| 国产亚洲aⅴaaaaaa毛片| 亚洲精品国产精品久久清纯直播| 欧美视频国产精品| 国产精品av免费在线观看| 日本精品视频在线| 亚洲人成77777在线观看网| 亚洲成人黄色网| 欧美性猛交xxxx乱大交蜜桃| 亚洲国产高潮在线观看| 国产精品老牛影院在线观看| 欧美日韩免费一区| 日产精品久久久一区二区福利| 国产精品久久久久秋霞鲁丝| 欧美精品videos| 久久久久久久久中文字幕| 国产综合香蕉五月婷在线| 亚洲欧洲日本专区| 国精产品一区一区三区有限在线| 亚洲午夜女主播在线直播| 国产精品吴梦梦| 91禁国产网站| 日韩电影在线观看中文字幕| 亚洲四色影视在线观看| 亚洲人成在线观看| 欧美激情一二区| 久久久精品久久久| 中文字幕亚洲欧美一区二区三区| 青青草国产精品一区二区| 亚洲福利在线看| 日韩av高清不卡| 亚洲国产三级网| 91精品免费久久久久久久久| 日韩av在线播放资源| 色综合色综合久久综合频道88| 国产成人中文字幕| 这里只有精品在线观看| 欧美日韩激情视频8区| 亚洲精品久久7777777| 成人欧美一区二区三区黑人孕妇| 精品久久久香蕉免费精品视频| 国内揄拍国内精品| 伊人久久精品视频| 国产精品亚洲аv天堂网| 欧美理论电影在线播放| 亚洲一区二区三区777| 亚洲热线99精品视频| 国产精品扒开腿做爽爽爽视频| 91产国在线观看动作片喷水| 久久精品亚洲精品| 国产婷婷成人久久av免费高清| 精品福利在线观看| 国产精品jvid在线观看蜜臀| 色婷婷综合久久久久| www.精品av.com| 亚洲男人天堂2023| 川上优av一区二区线观看| 国产成人精品免高潮费视频| 久久精品国产电影| 国产拍精品一二三| 性金发美女69hd大尺寸| 国产精品久久久久久久久免费| 91久久精品国产91久久性色|