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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

為什么要使用JDO

2019-11-18 12:38:19
字體:
供稿:網(wǎng)友

  網(wǎng)上關(guān)于JDO的文章已經(jīng)不少了,關(guān)于JDO的優(yōu)點也講了很多,我看了一些文章后,自己也研究了一段時間,忽然很想寫一個系列文章全面的介紹一下JDO,今天先寫下第一篇算是個開頭。呵呵,有些內(nèi)容是我對JDO規(guī)范的理解,假如有不對的地方請大家指正。
  
  java開發(fā)人員已經(jīng)有好幾種存取數(shù)據(jù)庫的方法:序列化,JDBC,面向?qū)ο笥成涔ぞ撸瑢ο髷?shù)據(jù)庫,以及實體EJB。那為什么還要介紹其他的存儲架構(gòu)呢?答案是,上面每一種實現(xiàn)存儲的方案都存在一定的限制。JDO正在嘗試解決這些限制。
  
  序列化 是Java建立的一種傳輸機制,它能夠把對象的信息轉(zhuǎn)換成一系列的字節(jié)碼,這些字節(jié)碼可以可以被傳輸?shù)骄W(wǎng)絡(luò)或者存儲到一個文件中。序列化的使用非常簡單,但他還是有限制的。它必須立即存取對象的特征,而且它不適合存取大批量的數(shù)據(jù)。在它更改一個對象的屬性時假如有錯誤發(fā)生他不能回滾錯誤的修改,因此不適于應(yīng)用程序的數(shù)據(jù)完整性要求。多個線程或程序不能同時互不干擾的讀寫序列化數(shù)據(jù)。所有這些不足是的序列化無法滿足大多數(shù)數(shù)據(jù)存儲要求。
  
  許多程序員使用 JDBC  API來操作關(guān)系數(shù)據(jù)庫。JDBC克服了許多序列化中存在的缺點:它可以操作大批量的數(shù)據(jù),有確保數(shù)據(jù)一致性的機制,支持信息的并發(fā)存取,可以使用已經(jīng)非常成熟的SQL語言。不幸的是,JDBC使用起來并不像序列化那么簡單。JDBC使用的關(guān)系范例不是被設(shè)計用于存儲對象的,因此,它迫使你放棄代碼中使用面向?qū)ο蟪绦虼鎯?shù)據(jù)的可能。
  
  由軟件廠商創(chuàng)建的架構(gòu)可以為你實現(xiàn)對象和關(guān)系數(shù)據(jù)庫之間的映射。 這種對象-關(guān)系映射支持可以是的你專注于對象模型的設(shè)計而不必關(guān)心面向?qū)ο蠛完P(guān)系數(shù)據(jù)庫之間的匹配。不幸的是每一種對象-關(guān)系映射支持都有一套他自己廠商實現(xiàn)的API。你不得不使自己的代碼遷就某一個單獨廠商的實現(xiàn)。假如這個廠商提高價格或者停止對bug更改的支持,假如你想用其他的廠商實現(xiàn)架構(gòu)時,你就不得不重寫你的代碼。
  
  比對象關(guān)系數(shù)據(jù)庫映射更好的是,一些軟件廠商開發(fā)了一種新的存儲對象到數(shù)據(jù)庫的方法。這種對象數(shù)據(jù)庫使用起來經(jīng)常比對象關(guān)系映射軟件簡單。ODMG組織成立的目的就是創(chuàng)建一個訪問對象數(shù)據(jù)庫的標準API。一些廠商也尊崇ODMG組織的要求,因此由于廠商實現(xiàn)不同帶來的麻煩也解決了。一些公司對于從關(guān)系數(shù)據(jù)庫轉(zhuǎn)向?qū)ο髷?shù)據(jù)庫顯得猶豫不決,因為有大量的數(shù)據(jù)存儲在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中。個別數(shù)據(jù)庫分析工具可以用于對象數(shù)據(jù)庫,然而大量的數(shù)據(jù)存儲使用的仍然是關(guān)系數(shù)據(jù)庫。由于這些原因,對象數(shù)據(jù)庫被很好的利用。
  
  Java平臺的企業(yè)級應(yīng)用中引入了實體EJB。 實體EJB是一個組件,他描述了數(shù)據(jù)庫中的持久性數(shù)據(jù)信息。EJB使用類似于“對象-關(guān)系”映射的辦法,它提供了一個持久性數(shù)據(jù)的面向?qū)ο蟮谋硎尽2煌趯ο箨P(guān)系軟件,EJB對于關(guān)系數(shù)據(jù)庫沒有限制;它描述的持久性信息可以來自一個企業(yè)信息系統(tǒng)(EIS)或者其他的存儲設(shè)備。而且,EJB使用了一個嚴格標準,實現(xiàn)它的廠商必須遵循這個標準。不幸的是,EJB標準在面向?qū)ο蠓矫嫔晕⒂行┣啡保热缫恍└呒壍奶匦裕豪^續(xù)、多態(tài)和復(fù)合關(guān)系等。另外,EJB的代碼編寫很復(fù)雜,而且它是一個重量級組建需要消耗應(yīng)用服務(wù)器很很多的資源來運行。但是,EJB中的會話Bean和消息驅(qū)動Bean有很多優(yōu)勢,所以JDO規(guī)范具體定義了JDO如何與他們進行集成。
  
  JDO集成了很多上述持久性機制的特性,這使得在JDO中創(chuàng)建一個持久類就像創(chuàng)建一個序列化類一樣簡單。JDO還支持批量數(shù)據(jù)的存儲,數(shù)據(jù)一致性,并發(fā)處理和JDBC的查詢功能。就像“對象-關(guān)系”映射軟件和對象數(shù)據(jù)庫一樣,它答應(yīng)使用面向?qū)ο蟮母呒壐拍睿热纭袄^續(xù)”。它避免了像EJB中實體Bean一樣必須依靠于來自廠商定義的嚴格規(guī)范的限制。像EJB一樣,JDO也不限定任何特定的后端數(shù)據(jù)庫。
  
  但是,這里還是要說一下,世界上從來就沒有“萬靈丹”。所以,JDO并不是對于每一個應(yīng)用程序都是有好處的。很多應(yīng)用程序完全可以使用其他更理想的存儲機制。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜丰县| 南部县| 阿瓦提县| 晋州市| 巨野县| 阿拉善右旗| 庆云县| 报价| 太湖县| 喜德县| 广宗县| 金山区| 常熟市| 安达市| 芮城县| 渭南市| 上高县| 秦安县| 胶州市| 台北市| 沅陵县| 桃园市| 陵川县| 于都县| 桃江县| 兴文县| 栾川县| 贺州市| 工布江达县| 府谷县| 亚东县| 若尔盖县| 三穗县| 兰考县| 格尔木市| 保山市| 宁乡县| 伊宁县| 西城区| 林西县| 夏河县|