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

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

Java數據對象(JDO)的前世今生

2019-11-18 15:46:58
字體:
來源:轉載
供稿:網友

  1 java數據庫應用,JDBC

  Java發明以來,在短短的幾年之間,迅速占領了從桌面應用(J2SE)到服務器(J2EE),再到小型設備嵌入式系統(J2ME)的應用開發市場,其語言吸取了SmallTalk的一切皆對象的理念,擺脫了C++的歷史累贅,簡潔、自由的風格贏得了很多開發者的喜愛。從JDK1.1開始,Java成為實用的語言,而不是被人觀望的新品秀;再經過JDK1.2的大量增強(尤其是Collection Framework),JDK1.3的虛擬機效率提升(HotSpot),JDK1.4的融合百家之長(Logging、RegEXP、NewIO等),現在已經是成熟穩重,頗顯大家風范。

  在企業級市場上,大部分的應用建立在數據庫基礎上,數據是企業的生命,傳統開發語言,包括面向過程的C、面向對象的C++、變種Pascal的Delphi(非常棒的語言,我用過四年),面向數據的PowerBuilder等等,先后在數據庫開發的舞臺上展現風姿。Java當然不會放過這些,于是,出現了JDBC。在JDBC的幫助下,Java也迅速滲入數據庫開發的市場,尤其是面向企業服務器的應用開發。

  今天要談的JDO,與JDBC有非常密切的關系,盡管JDO并不是只面向JDBC的數據對象包裝規范。下面先簡單地介紹一下JDBC。

  1.1 關系數據庫之百家爭鳴,ODBC

  關系數據庫的歷史一言難盡,我只能從我的接觸經歷和所見所聞,簡單地敘述一下。最早的時候,計算機還只在一些大型的研究機關露面,并不是普羅大眾可以涉及的。蘋果電腦將個人電腦引入民間,再隨著IBM的PC標準開放,個人電腦逐步普及開來,加上微軟的DOS操作系統,以及Borland的Turbo系列語言開發環境,老百姓發現原來電腦可以做這么多事!后來,出現了DBASE,一個簡單的關系數據庫系統,和SQL語言。后來,Borland看到了數據庫的市場前景,推出了Paradox(也是當今Delphi和C++Builder中仍然使用的Paradox),一舉占領了民用數據庫的大部分江山,之后,Borland干脆收購了Dbase,后來又購買了InterBase,將數據庫市場的領先優勢一直保持到Windows3.0出現。這時候,微軟在Windows1.0和2.0被人痛罵之后頑強地推出3.0,以及更穩定的3.1和Win32API,造就了個人電腦桌面操作系統的霸主地位,在Borland未警覺的情況下,購買了同樣具有類Dbase數據庫技術的Fox公司,并迅速將其易用化,形成了FoxBase,后來演變成FoxPRo,逐漸超過了Borland,成為個人電腦數據庫的大戶。微軟再接再勵,為簡單易用而低負荷要求的數據庫應用開發了access,贏得了廣大開發人員的心。當然,同期的Oracle、Sybase、Informix等商用數據庫憑專注于企業級數據庫技術成為高端的幾位領軍人物。微軟當然也想成為高端數據庫供給商之一,于是自行開發一套面向企業級應用的數據庫,不過很快項目夭折,微軟不甘心,購買了Sybase的底層TDS技術,包裝成了SQL Server,憑微軟的高度易用性的特點,也占領了不少市場。

  當市場上出現眾多的數據庫產品之后,Borland和微軟都發現自己擁有的數據庫產品挺多,市場也不小,不同的產品給用戶帶來不同的配置任務,不利于所有產品的推廣,于是,兩者紛紛開始制定數據庫訪問的規范,微軟推出了ODBC,其面向開發人員的親和性,逐步獲得了認可,同時,Borland糾集了IBM和Novell也推出了IDAPI數據庫接口規范,也就是今天BDE的核心,不過后來Novell和IBM先后退出,只剩Borland獨力支撐。不過Borland是一個技術實力雄厚的公司,其技術一向領先于微軟,BDE的性能比初期的ODBC不知道要好多少倍,后來微軟偷師學藝,把連接池等技術加到ODBC中,在Delphi3.0及其BDE在市場上風光無限的時候,逐步趕了上來并有超過。直到今天,BDE仍是Borland的產品線上的數據庫訪問標準,而微軟假如不是將ODBC和多數數據庫的客戶端內嵌進Windows的話,估計BDE仍是市場的贏家。不過,微軟是玩弄市場的老手,通過對操作系統的壟斷,其數據庫產品和ODBC標準終究占據了多數開發市場。

  1.2 從optional pack到JDK的標準API

  Java開始涉及數據庫應用后,Sun就極力制定Java的數據庫規范,JDBC API就是類似ODBC一樣,對數據庫訪問的底層協議進行最基本的包裝,然后形成一套統一的數據訪問接口,數據庫連接、SQL語句句柄、結果集,都帶有ODBC的影子。以方便配置為目的,Sun極力推薦完全瘦客戶端的TYPE 4型JDBC驅動,這是一個不需要安裝數據庫客戶端的驅動規范,是現在使用最多的。當然,為了保持與舊的數據庫兼容,JDBC規范中包括了專用于連接ODBC的TYPE 1驅動和需要安裝數據庫客戶端的TYPE 2驅動,以及可以由廠商在數據庫服務端專門提供面向JDBC的服務的TYPE 3驅動。

  JDBC最早出現時,還不屬于標準JDK的一部分,而是作為一個額外包提供下載。后來,隨著Java編寫的數據庫應用的的增多,和JDBC規范本身的逐漸成熟,JDBC終于成為JDK1.1的一部分。

  JDBC目前最新的是3.0版本,還有正在討論中的4.0版本。實際上,在開發中使用得最多的還是1.0中的API,2.0中主要增加了可雙向滾動的結果集、更新批處理等提高可用性和性能的API,3.0主要增加了連接池、可更新的結果集等特性。4.0將在可治理性、連接池規范化等方面再做改進。

  2 面向對象與數據庫

  現在的程序員,沒有不知道面向對象的。作為接近真實客觀世界的開發概念,面向對象使程序代碼更易讀、設計更合理。在普遍存在的數據庫應用領域,開發人員對面向對象的追求從未停止過。從八十年代開始,就有很多公司和研究機構在進行著面向對象與數據庫結合的研究。

  2.1 SmallTalk、C與C++、Delphi-Object Pascal、Java

  面向對象的語言最早有好幾種雛形,IBM的SmallTalk是其中最為流行的,在SmallTalk中,一切都是對象,一切都是類,它將面向對象的概念發揮到了極致。面向對象的編程比起傳統的面向過程的方式挺進了一大步,使人們熟悉到:原來軟件可以這樣寫。不過,由于計算機基本結構與底層硬件體系和系統軟件的限制,SmallTalk還不能在理想的性能前提下推廣到普通的應用上,這一點暫時限制了SmallTalk的發展,接著,C語言的面向對象版C++出現了,由于使用C語言的人很多,C++很快成為面向對象編程的主流語言。不過,為了保證與C的兼容,C++保留了很多面向過程的痕跡,比如惡心的指針、全局變量等等。Pascal的改進版Object Pascal相對來說安全許多,后來Borland干脆將Object Pascal換了個名字,叫Delphi,從此開創了一片面向對象編程的新世界, Delphi的嚴謹語法和快速編譯吸引了眾多的應用開發者,加上Borland的完美的VCL組件體系,比起MFC來方便而輕易,另外,Delphi完整的數據庫組件,也將數據庫開發變得簡單而輕易,Delphi再次成為成熟的面向對象開發語言。微軟當然不會放過這些,通過將MFC內置到操作系統中,微軟的VC++也搶回一些市場。這也是為什么Delphi開發的應用程序編譯后會比VC、VB開發的程序大的原因。

  1995年,Sun的一個開發小組本來為了小型嵌入式系統開發OAK語言,結果無心插柳柳成蔭,發展出了Java語言,它是一個完全擺脫了傳統語言的各種負擔的面向對象的語言,當然,也保留了一些非面向對象的核心(原始類型)以保證速度?,F在Java也為最流行的面向對象語言之一。當然,微軟同樣不會放過它,擅于模擬的微軟立即弄出一個C#來與之競爭,并在C#中保留了一些變種的指針(指代)以吸引傳統的C開發者。關于這些語言的各自特點,這里就不一一贅述了。

  2.2 數據庫與數據對象化

  數據庫是企業級應用不可缺少的,因此,在面向對象流行的時候,數據庫廠商也在進行著數據對象化的研究。這些研究在上個世紀八十年代就初現端倪。

  數據庫的對象化一般有兩個方向:一個是在主流的關系數據庫的基礎上加入對象化特征,使之提供面向對象的服務,但訪問語言還是基于SQL;另一個方向就是徹底拋棄關系數據庫,用全新的面向對象的概念來設計數據庫,這就是對象數據庫ODBMS。

  2.2.1 關系數據庫對象化、SQL99與JDBC3.0

  隨著許多關系數據庫廠商開始提供對象化服務,各自的接口開始互不兼容,在經歷一些麻煩之后,關系數據庫廠商感覺到規范化的必要,因為當初關系數據庫雄霸天下時SQL92標準起了很大作用,大家可以按照統一的編程方式來訪問高性能的商用數據庫。

  關系數據庫廠商集中起來,重新將對象化服務規范起來,形成了SQL99規范,將其中的對象結構等內容規范起來,開始一個嶄新的面向對象的關系數據庫(ORDBMS)的歷程。

  JDBC3.0就是在這種情況下出臺的,它將對關系數據庫中的對象服務的訪問API規范起來,為Java平臺提供了訪問ORDBMS的標準方式。當然,JDBC3.0對傳統的SQL操作也進行了很多功能增強。

  Oracle是一個傳統的關系數據庫廠商,在對象化的道路上,Oracle當然采取追加對象化特征的道路,以侵入數據對象化的市場,保持Oracle在數據庫領域的領導地位。假如說Oracle7.4使Oracle走向全盛的話,從Oracle8開始,Oracle就成為關系數據庫加對象類型的先驅。在Oracle8中,我們可以定義一些數據結構(Record),將普通的類型包裝在其中成為數據元素,然后可以在客戶端按Record結構進行訪問,初步提供了面向對象的數據庫服務。

  2.2.2 對象數據庫

  對象數據庫就是采用全新的面向對象概念來設計數據庫的全新數據庫類型。在這方面,主要以一些大學研究機構進行設計和開發,有些也形成了產品,不過由于市場方面的原因(主要是關系數據庫的輕易上手和市場絕對領導地位)和ODBMS先天的一些弱點(比如查詢引擎很難優化),使ODBMS沒有象關系數據庫那樣流行起來。

  不過對象數據庫的對象化特點還是令人割舍不下,目前還是有一些很好的產品在市場上,從商用的到免費的都用。目前在ODBMS領域占據領導地位的是Versant、FastObjects和ObjectStore等幾大廠商,并且,市場份額也在逐步擴展。免費的產品包括C++編寫的Ozone、純Java的db4o等等。還有一些研究機構開發一些底層的面向對象數據庫引擎,但只提供一些底層的API,不提供治理方面的功能,以及一些算法提供開放式接口,讓廠商去選擇和實現。比如美國威斯康新大學計算機系數據庫組的SHORE引擎,就是一個非常出色的面向對象數據庫引擎,現在還在積極的更新中,一些其它研究機構和數據庫廠商采用它完成了自己的非凡的對象數據庫,比如專用于地理信息的數據庫、專用于宇宙空間數據研究的數據庫等等。

  目前對象數據庫最大的障礙是缺乏統一的規范,各個數據庫廠商有各自的訪問接口。對象數據庫比起關系數據庫來,不只是基本的幾種數據類型那么簡單,它還涉及繼續處理、多態等一大堆面向對象特征的實現,規范化道路當然困難重重。這也是對象數據庫無法普及的一個重要原因。

  也有一些機構提出了一些建議的規范,比如制定Corba標準的OMG小組的一個分組ODMG提出的ODMG規范,目前已經是3.0版本,其中的OQL對象查詢語言相當具有吸引力。還有一些中立的機構提出了其它的一些標準化的對象訪問API,也可算是面向對象數據庫的規范之一。象前面提到的FastObjects和Ozone就是符合ODMG3.0規范的。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品91美女久久久久久久| 最近2019中文字幕在线高清| 久久免费视频观看| 亚洲奶大毛多的老太婆| 日韩免费高清在线观看| 一区二区在线免费视频| 日韩性xxxx爱| 欧美精品在线观看| 国产精品爽黄69| 国产精品69av| 欧美日韩亚洲一区二| 日本亚洲精品在线观看| 欧美xxxx做受欧美| 亚洲国产高清高潮精品美女| 亚洲自拍偷拍视频| 视频在线观看99| 国产女精品视频网站免费| 国产精品美女久久久久久免费| 久久夜精品va视频免费观看| 91精品国产高清久久久久久久久| 成人在线视频网| 97婷婷大伊香蕉精品视频| 欧美日韩精品在线观看| 国产精品视频不卡| 精品国产网站地址| 久久国产精品久久久| 一区二区三区视频在线| 97免费视频在线| 91理论片午午论夜理片久久| 亚洲精品99999| 亚洲bt欧美bt日本bt| 欧美精品在线播放| 91日本在线观看| 91精品久久久久久久久久入口| 亚洲第一级黄色片| 日韩美女福利视频| 免费av一区二区| 国产精品国产三级国产aⅴ9色| 久久69精品久久久久久久电影好| 久久色在线播放| 亚洲国产欧美久久| 亚洲免费一级电影| 欧美日韩国产在线看| 日韩美女免费视频| 欧美自拍大量在线观看| 色妞久久福利网| 中文字幕欧美专区| 久久精品91久久久久久再现| 精品久久久久久久久久久久| 国模叶桐国产精品一区| 日韩av在线一区二区| 久久久亚洲天堂| 成人欧美在线视频| 夜夜嗨av一区二区三区免费区| 78m国产成人精品视频| 日韩有码在线视频| 日韩国产精品亚洲а∨天堂免| 欧美精品xxx| 亚洲第一福利网| 国产精品永久免费视频| 视频在线观看一区二区| 红桃av永久久久| 中文字幕一区二区三区电影| 欧美成人激情图片网| 国产91免费看片| 精品小视频在线| 亚洲97在线观看| 国产精品亚洲视频在线观看| 97精品国产91久久久久久| 7777免费精品视频| 欧美性猛交xxxx富婆| 国产91色在线免费| 日本精品免费一区二区三区| 1769国内精品视频在线播放| 欧美性猛交xxxx富婆弯腰| 91亚洲午夜在线| 中文字幕日韩精品在线| 国产精品视频最多的网站| 97国产成人精品视频| 日韩在线www| 国产日韩在线看片| 成人黄色片在线| 亚洲欧美国产va在线影院| 日韩精品在线播放| 精品久久久999| 亚洲a∨日韩av高清在线观看| 欧美综合在线第二页| 国产视频久久久久久久| 俺也去精品视频在线观看| 爽爽爽爽爽爽爽成人免费观看| 中文.日本.精品| 亚洲美女在线看| 91av国产在线| 日韩av中文字幕在线| 欧美视频精品一区| 91在线无精精品一区二区| 91精品综合视频| 国产精品成人一区| 一区二区在线视频播放| 91精品国产综合久久男男| 久久九九精品99国产精品| 伊人久久久久久久久久久久久| 亚洲人成77777在线观看网| 97在线观看视频| 国产成人黄色av| 懂色av影视一区二区三区| 久久精品国产欧美激情| 欧美精品电影在线| 久久久国产精品亚洲一区| 欧美精品在线免费| 国产视频精品自拍| 欧美激情精品久久久久久免费印度| 久久久免费高清电视剧观看| 精品成人av一区| 亚洲一区二区三区视频播放| 九九精品在线观看| 国内精品美女av在线播放| 国产美女久久精品香蕉69| 国产91九色视频| 亚洲欧美激情四射在线日| 国产精品免费一区| 欧美激情一级欧美精品| 国内伊人久久久久久网站视频| 亚洲第一免费播放区| 久久这里只有精品视频首页| 国产精品视频专区| 亚洲淫片在线视频| 91精品久久久久久久久久久久久久| 欧洲永久精品大片ww免费漫画| 国产91在线播放精品91| 欧美日韩加勒比精品一区| 国产97人人超碰caoprom| 日韩av综合网站| 国产精品稀缺呦系列在线| 国产z一区二区三区| 亚洲天堂av高清| 欧美激情精品久久久久久变态| 91国产美女在线观看| 日韩精品福利网站| 日韩激情第一页| 97精品国产97久久久久久免费| 亚洲国产精品高清久久久| 欧美精品情趣视频| 欧美大片va欧美在线播放| 91精品国产91久久久久久最新| 中文字幕在线精品| 久久久久久久电影一区| 色偷偷噜噜噜亚洲男人| 亚洲电影天堂av| 久久久久久成人精品| www.日本久久久久com.| 亚洲国内精品视频| 欧美大片免费看| 国产精品久久久久久久美男| 日韩一区二区精品视频| 久久久在线视频| 日韩中文有码在线视频| 色偷偷偷亚洲综合网另类| 美日韩在线视频| 国产精品视频公开费视频| 国产成人精品一区二区在线| 成人亚洲欧美一区二区三区| 欧美性在线观看| 久久av中文字幕|