• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    hibernate與CMP

    發布: 2007-6-06 17:39 | 作者: 網絡轉載 | 來源: 網絡 | 查看: 85次 | 進入軟件測試論壇討論

    領測軟件測試網

     

    hibernate與CMP
    J2EE的標準是CMP Entity Bean,而實際應用中受到詬病最多的也是它。我們化了整整半年時間研究CMP2.0的開發方法,目前總算能夠將代碼量減少到70%,并且有希望減少到90%。我曾經很滿足現有的成績,但是當我真正地閱讀了hibernate后,對CMP2.0的信心徹底動搖了。

    hibernate至少比CMP2.0有以下優點:
    1. 兼容性。
    規范一模一樣,實現各有不同,這是CMP的現狀。用第三方O-R Mapping工具可以解決這個問題。
    2. 保護智力投資。
    在了解了Orion, Weblogic, JBoss的CMP實現后,我不愿意再去學習Websphere 或者Resin的實現了。
    3. 性能。
    a. local v.s. remote, hibernate、JDO、Castor都是本地調用,CMP2.0雖然也有Local接口,但是Web層還是需要通過Remote接口訪問EJB層的數據,序列化、網絡調用、創建大量的對象,都是性能降低的原因。
    b. transaction,J2EE提出了一個全新的事務模型(method-based descriptor),對程序員的開發確實是個“簡化”,記得一本教程建議所有的EJB方法都用Required。但這樣的結果是什么? 性能極度降低!互鎖!沒有辦法,我們只有再去調節各個方法的Transaction屬性,然后又出現 新的互鎖...
    新的事務模型是不成功的。它試圖簡化問題,卻引入了更為嚴重的問題。各家廠商的Transaction實現也不盡相同,有的支持Optimistic Lock,有的在VM中同步Entity對象,又是兼容性的一大敵。
    hibernate沒有試圖創造一個更新的模式,相反,它沿用了傳統數據庫的Transaction編程模式,在對J2EE的Transaction傷透腦筋后看到它,真是十分親切,感覺自己確實在編程,而不是碰運氣填代碼了。

    4. 動態Query。
    Entity Bean很難實現動態Query,這是因為它基于代碼自動生成技術,即最終的執行代碼是在部署編譯時生成的。hibernate則有根本的改變,它基于reflection機制,運行時動態Query是很自然的事。另外,hibernate幾乎支持所有的SQL語法,傳統數據庫可以做的它就可以做。

    5. 發展速度。
    I have a dream, 有一天Entity Bean會變得很好。但至少目前來看,Entity Bean是一個不完善的產品,它是大公司政治斗爭和妥協的產品,而且習慣性將一些問題“無限期擱置”,典型的例子就是Query(之所以不提其他問題,是因為其他都是Entity Bean的致命傷:))
    形成強烈反差的是,hibernate的核心程序員只有一人,但它改進的速度確是Entity Bean無法企及的。

    6 . 繼承和多態。
    OO語言的精華在Entity Bean這里是行不通的,我曾經自我安慰將Entity Bean看做一個“內存中的數據表”,才找到了一點平衡。
    但當我看到hibernate時,又開始不平衡了。

    另外,CMP2.0也有一些缺點是可以彌補的

    1. 代碼維護
    大量的接口文件和配置文件,開發和維護的工作量很大。
    解決途徑:采用xdoclet,可以自動產生眾多的接口和配置文件,甚至facade, delegate等高級模式。

    至少目前來看,hibernate的缺點有

    1. 代碼維護
    hibernate提供了自動生成mapping文件“框架”的工具,但還需要手工調節。而這類開發,能想到的最佳模式就是xdoclet的(代碼+注釋)的模式了。幸好,hibernate的程序員已經向xdoclet項目增加了hibernate的模塊,F在需要的是等待xdoclet的下一個release。

    結論:
    hibernate至少從文檔上超越了Entity Bean很多,我要學習hibernate。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: hibernate cmp


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>