<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    愚人碼頭

    知恥而后勇,知不足而進
    隨筆 - 33, 文章 - 1, 評論 - 26, 引用 - 0
    數據加載中……

    對hibernate的新認識

            最近項目接觸的新架構讓我對Spring和Hibernate又有了新的認識,以前使用Hibernate的時候并不是從真正的ORM角度來考慮的,我想ORM真正的目的是讓我們不需要去關注數據庫表與表之間的關系,而是考慮Entity對象之間的關系,將關注點從表與表之間轉移到對象與對象的關系上。

            以前在使用hibernate的時候,經常由middlegen或其他工具生成Entity類后就不再改動,或者只對一些字段屬性進行改動,而現在這個架構在使用的時候,所有的entity之間的業務邏輯都是實現在entity類里面,如有Account, User, Balance這三個實體類,一個User可能有多個Account, 一個Account的對應一個Balance,如果需要添加一個新的User,同時再創建一個默認的Account, 這樣的邏輯我以前會把他們都在Service層中實現,而現在的做法是直接在User類中設置一個addAccount的方法,在createUser的時候進行調用,而創建User時則是調用一個Factory進行創建。這樣就將業務邏輯全部封裝在entity類中,除了一些查詢之外,而這寫對象也就成了domain對象。

            當然,在客戶端調用的時候我們還是通過一個Service來調用domain對象的,這個Service是由Spring維護的,在每個service方法中都會存在Hibernate的Session,這樣在持久化的時候,只需要flush一下就可以將所有的domain對象持久化到數據庫中。在當前框架中,表現層使用的是GWT,而hibernate session則使用Spring的SessionInViewInterceptor將session一直傳播到表現層,這樣在Lazyload的時候就不會出現問題。所有domain對象的ID都是由AspectJ靜態織入,因為在使用的時候,要避免對ID進行操作,如根據ID進行查找之類的,因為ID都是無業務的主鍵。

           在hibernate mapping file中,所有實體的關系都體現在里面,包括subclass, map,list之類的數據結構,這些結構之前我很少用到,看來對hibernate的理解還是有些差異,僅僅局限在了簡單的使用上,卻忘了其精髓----ORM,從對象的角度考慮

    posted on 2008-01-30 11:14 船夫 閱讀(1954) 評論(7)  編輯  收藏 所屬分類: java技術

    評論

    # re: 對hibernate的新認識  回復  更多評論   

    從軟件工程角度,hibernate不被提倡,它要求使用者有很高的技巧,如果是單個人沒有問題,如果是群體,這項技術就不被看好,不可能每個人都是博士.
    2008-01-30 12:13 |

    # re: 對hibernate的新認識  回復  更多評論   

    不用hibernate同樣能實現你的業務邏輯
    2008-01-30 12:38 | e

    # re: 對hibernate的新認識  回復  更多評論   

    @聽
    不是吧,Hibernate有很好的封裝,大家用起來很方便呀。
    學習的曲線也不是很陡,不用要求每個人都是專家,只要會基本的操作就OK,但一個Project里至少有一個人是這方面的專家。
    2008-01-30 13:05 | Robin's Java World

    # re: 對hibernate的新認識  回復  更多評論   

    其實hibernate在使用起來并不困難(緩存配置和事務隔離級別的設置還是需要一些全面的考慮的),真正的意義是考慮角度的改變,從我們以往的表之間的關系變成了實體類的關系
    2008-01-30 13:48 | 船夫

    # re: 對hibernate的新認識[未登錄]  回復  更多評論   

    我也認為hibernate想要用起來應該算是門檻比較低的了。只是一些復雜機制,如繼承、多對多的中間表、何時使用MAP等問題才需要專家來處理。對于一般的開發者來說專家做好了映射,培訓一下模型概念,使用起來仍舊是比較容易的一件事。
    另外,我認為lazy可以使得我們在處理業務邏輯時,不用被加載數據問題而打斷思考。這個不是其他方案可以提供的能力。
    2008-01-30 14:17 | Feng

    # re: 對hibernate的新認識  回復  更多評論   

    最主要的是穩定性的問題,如果hibernate內容表與表之間關系太多,就會出一些莫名奇妙,讓你被老板BS的問題.
    2008-01-31 12:13 | Alexander.Yu

    # re: 對hibernate的新認識  回復  更多評論   

    這種問題目前我到還沒遇見過,而且當前項目的表結構還是比較復雜的,我知道hibernate如果不進行緩存配置的話,性能有的時候會有問題,至于穩定性的問題我倒是還沒遇到過
    2008-01-31 14:13 | 船夫
    主站蜘蛛池模板: 亚洲AⅤ优女AV综合久久久| 亚洲女久久久噜噜噜熟女| 亚洲成a∨人片在无码2023 | 国产麻豆剧传媒精品国产免费| 美女视频黄视大全视频免费的| 国产中文在线亚洲精品官网| 99re在线这里只有精品免费| 亚洲欧洲日韩国产一区二区三区| 一本久到久久亚洲综合| 嫩草在线视频www免费观看| 亚洲AV色吊丝无码| 亚洲欧洲精品成人久久奇米网 | 国产卡一卡二卡三免费入口| 青青草97国产精品免费观看| 蜜芽亚洲av无码精品色午夜| 亚洲Av无码乱码在线znlu| 2019中文字幕在线电影免费 | 亚洲综合激情视频| 四虎影视在线永久免费看黄| 免费A级毛片无码A∨中文字幕下载| 亚洲精品蜜夜内射| 亚洲日本一区二区| 亚洲精品国产国语| 亚洲精品无码专区在线在线播放| 最近2019中文字幕mv免费看| 久久久久久免费一区二区三区| 亚洲av永久中文无码精品综合 | 亚洲国产精品久久人人爱| 亚洲国产成人久久精品99| 国产精彩免费视频| 成人国产精品免费视频| 亚洲欧美日韩综合俺去了| 久久久久亚洲av无码专区| 亚洲精品国产精品乱码不卡| 毛片A级毛片免费播放| 一级毛片免费观看不卡的| 亚洲高清免费视频| 亚洲AV永久无码精品一福利| 亚洲美女视频免费| 亚洲av永久无码精品表情包| 伊人久久亚洲综合影院|