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

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

J2EE綜合:選擇JDO還是CMP?

2019-11-18 16:17:16
字體:
供稿:網(wǎng)友

  由孫賓譯自http://www.onjava.com/pub/a/onjava/2003/05/21/jdo.Html 

作者:David Jordan 和 Craig Russell 
著有《Java Data Objects》一書 
2003年5月21日 

  作者注:JDO和CMP方式的EJB目前正在同時(shí)向前發(fā)展,但采取的是不同的路線。JDO的核心思想是在企業(yè)應(yīng)用軟件架構(gòu)的不同層面中存儲(chǔ)傳統(tǒng)的Java對(duì)象(Plain Old Java Objects,下稱POJOs),而CMP方案則基于容器環(huán)境,并針對(duì)特殊的需求。 

  兩者之間的異同在規(guī)范出臺(tái)之初便成為眾所爭(zhēng)論的話題。你可以到JDOCentral.com上看到這類的爭(zhēng)論,而在6月中旬即將在舊金山開幕的2003年JavaOne大會(huì)上,也會(huì)有一些演示和講解來比較這兩種不同的技術(shù)。 

  在這次JavaOne大會(huì)上,3368號(hào)技術(shù)對(duì)話將討論JDO與Struts(一個(gè)著名的Web應(yīng)用架構(gòu)設(shè)計(jì)的開源軟件)集成的可行性和實(shí)踐經(jīng)驗(yàn);3236號(hào)專題研究JDO與EJB容器的結(jié)合;1289號(hào)專題將對(duì)比使用JDO、JDBC和EJB時(shí),設(shè)計(jì)模式在開發(fā)中的應(yīng)用。 

  在我們的《Java Data Objects》的第17章有一小段話描述使用JDO和CMP的平衡點(diǎn)。--Craig Russell 

JDO還是CMP? 
  在你對(duì)項(xiàng)目開發(fā)策略下決定之前,CMP實(shí)體Bean和JDO都是值得考慮的方式。 

  JDO對(duì)粗粒度和細(xì)粒度的數(shù)據(jù)對(duì)象設(shè)計(jì)都很適合,具體在一個(gè)應(yīng)用服務(wù)器環(huán)境中,一般用于sessionBean后面。CMP也是用于SessionBean之后,它的遠(yuǎn)程調(diào)用很少直接用到。 

  JDO編寫的類只須編譯一次就可用于分布式架構(gòu)中的任何一層,并且在集成到Web或應(yīng)用服務(wù)器之前可以以單層或兩層的方式先調(diào)試好。而CMP只能在發(fā)布到一個(gè)具體的應(yīng)用服務(wù)器后才能調(diào)試。 

  JDO沒有直接定義遠(yuǎn)程行為,這一點(diǎn)與Servlet、jsp和EJB組件不同。所有的分布處理、事務(wù)和安全方面的策略都基于獨(dú)立存儲(chǔ)管理器,該管理器負(fù)責(zé)處理你的對(duì)象模型中所有的類實(shí)例。這一點(diǎn)也說明你可以在分布式環(huán)境中的任何層面上使用JDO,而其遠(yuǎn)程行為由容器來實(shí)現(xiàn),而不是JDO廠商。 

  CMP組件提供了較高的可移植性,Bean類及其描述符都是規(guī)范化的。多數(shù)的不兼容性只存在于規(guī)范所未能盡述的地方,包括如何將類映射到具體的數(shù)據(jù)庫(kù)(不限于關(guān)系數(shù)據(jù)庫(kù))、類似只讀類的可選功能、其它方面的廠商擴(kuò)展。而JDO產(chǎn)品視具體廠商所支持的可選功能而有所不同。 

  CMP中,對(duì)象之間的關(guān)系是受控的,即一端的改變會(huì)影響到另一端,并且對(duì)應(yīng)用是可見的。而JDO不支持關(guān)系的管理,只是一些廠商以擴(kuò)展的方式提供類似功能。 

  繼承是對(duì)真實(shí)對(duì)象建模時(shí)常用的概念,但CMP并不支持它。CMP在組件的定義和實(shí)現(xiàn)時(shí)并不一致,在具體實(shí)現(xiàn)一個(gè)EntityBean接口時(shí),實(shí)現(xiàn)的類可以具有繼承關(guān)系,但在定義這個(gè)EntityBean時(shí)卻不行。類之間的關(guān)系也只是在接口之間,而不是在實(shí)現(xiàn)類之間,因此這些關(guān)系也不存在多態(tài)性。舉例來說,一個(gè)名為MediaItem的CMP Bean類不能直接聯(lián)系到名為MediaContent的類,因?yàn)镸ediaContent是抽象的,類并無具體實(shí)例。要建立這樣的聯(lián)系,你只能將其轉(zhuǎn)換為兩個(gè)關(guān)系:一個(gè)是MediaItem與Movie類,一個(gè)是ModiaItem與Game類,并且在每個(gè)相關(guān)方法中,你必須針對(duì)兩個(gè)關(guān)系區(qū)別對(duì)待。 

  在訪問對(duì)象屬性上,CMP和JDO也天差地別。CMP Bean中,所有的屬性和對(duì)象關(guān)系都是作為抽象的get和set方法定義在描述符中,對(duì)實(shí)際屬性的訪問只能由具體的由相關(guān)工具生成的實(shí)現(xiàn)類去完成。而JDO中,可保存的屬性和關(guān)系在描述符中聲明,并且在代碼中也可以直接訪問這些屬性,包括JDO產(chǎn)品生成的代碼在內(nèi)。JDO增強(qiáng)器會(huì)在增強(qiáng)時(shí)適當(dāng)?shù)馗脑爝@些代碼。 

  JDOQL和EJBQL都提供了類似的查詢數(shù)據(jù)的方法。兩者都可以在程序中查詢并訪問數(shù)據(jù)對(duì)象,都采取“讀-改-寫”的策略,都不是完整的數(shù)據(jù)操縱語(yǔ)言(比如沒有數(shù)據(jù)更新語(yǔ)句),它們都只用于查找數(shù)據(jù)對(duì)象并在代碼中訪問。 

  CMP要求所有的訪問操作都在事務(wù)環(huán)境中,非事務(wù)方式的訪問不受支持。而JDO允許你決定是否采用事務(wù)方式。對(duì)需要更新數(shù)據(jù)的地方,JDO要求采用事務(wù),而只是讀取的代碼中,包括緩沖在內(nèi),JDO支持非事務(wù)方式的訪問。 

   
  David Jordan創(chuàng)立了Object Identity, Inc.,提供Java Data Objects(JDO)的咨詢和培訓(xùn)服務(wù)。David也是《Java Data Objects》一書的作者之一,另一作者是Craig Russell。 

  Craig Russell是Sun微系統(tǒng)公司的JDO規(guī)范領(lǐng)導(dǎo)者。 

(出處:http://m.survivalescaperooms.com)



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 博湖县| 西和县| 南靖县| 湛江市| 郓城县| 阳曲县| 自治县| 大渡口区| 青州市| 雷波县| 太原市| 长阳| 长丰县| 灵丘县| 得荣县| 乐昌市| 清丰县| 通化县| 万年县| 阳江市| 辽宁省| 犍为县| 新邵县| 乐清市| 札达县| 曲周县| 深圳市| 株洲市| 柯坪县| 黄大仙区| 龙江县| 衡水市| 沿河| 东乌| 和田市| 呈贡县| 连山| 大渡口区| 科尔| 呈贡县| 连山|