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

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

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

    愚人碼頭

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

    對hibernate的新認(rèn)識

            最近項(xiàng)目接觸的新架構(gòu)讓我對Spring和Hibernate又有了新的認(rèn)識,以前使用Hibernate的時候并不是從真正的ORM角度來考慮的,我想ORM真正的目的是讓我們不需要去關(guān)注數(shù)據(jù)庫表與表之間的關(guān)系,而是考慮Entity對象之間的關(guān)系,將關(guān)注點(diǎn)從表與表之間轉(zhuǎn)移到對象與對象的關(guān)系上。

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

            當(dāng)然,在客戶端調(diào)用的時候我們還是通過一個Service來調(diào)用domain對象的,這個Service是由Spring維護(hù)的,在每個service方法中都會存在Hibernate的Session,這樣在持久化的時候,只需要flush一下就可以將所有的domain對象持久化到數(shù)據(jù)庫中。在當(dāng)前框架中,表現(xiàn)層使用的是GWT,而hibernate session則使用Spring的SessionInViewInterceptor將session一直傳播到表現(xiàn)層,這樣在Lazyload的時候就不會出現(xiàn)問題。所有domain對象的ID都是由AspectJ靜態(tài)織入,因?yàn)樵谑褂玫臅r候,要避免對ID進(jìn)行操作,如根據(jù)ID進(jìn)行查找之類的,因?yàn)镮D都是無業(yè)務(wù)的主鍵。

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

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

    評論

    # re: 對hibernate的新認(rèn)識  回復(fù)  更多評論   

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

    # re: 對hibernate的新認(rèn)識  回復(fù)  更多評論   

    不用hibernate同樣能實(shí)現(xiàn)你的業(yè)務(wù)邏輯
    2008-01-30 12:38 | e

    # re: 對hibernate的新認(rèn)識  回復(fù)  更多評論   

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

    # re: 對hibernate的新認(rèn)識  回復(fù)  更多評論   

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

    # re: 對hibernate的新認(rèn)識[未登錄]  回復(fù)  更多評論   

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

    # re: 對hibernate的新認(rèn)識  回復(fù)  更多評論   

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

    # re: 對hibernate的新認(rèn)識  回復(fù)  更多評論   

    這種問題目前我到還沒遇見過,而且當(dāng)前項(xiàng)目的表結(jié)構(gòu)還是比較復(fù)雜的,我知道hibernate如果不進(jìn)行緩存配置的話,性能有的時候會有問題,至于穩(wěn)定性的問題我倒是還沒遇到過
    2008-01-31 14:13 | 船夫
    主站蜘蛛池模板: 国产一级特黄高清免费大片| 1000部禁片黄的免费看| 日本高清免费不卡在线| 久久乐国产综合亚洲精品| 57PAO成人国产永久免费视频| 久久久久亚洲Av无码专| 最近最好最新2019中文字幕免费| 亚洲国产成人久久精品影视| 久久久久久久久久国产精品免费| 亚洲成a人片在线观看中文动漫| 日本免费电影一区二区| 91亚洲国产成人精品下载| 五月亭亭免费高清在线| 亚洲1234区乱码| 色吊丝永久在线观看最新免费| 色偷偷噜噜噜亚洲男人| 亚洲精品无码你懂的网站| 国产色无码精品视频免费| 亚洲国产精品第一区二区| 中文字幕无码免费久久99| 亚洲日韩av无码中文| 亚洲精品成人区在线观看| 黄色网站软件app在线观看免费| 精品亚洲国产成AV人片传媒| 99在线视频免费观看视频| 国产精品亚洲色婷婷99久久精品| 亚洲成片观看四虎永久| 免费观看久久精彩视频| 亚洲啪啪免费视频| 日本不卡视频免费| 一级特黄录像免费播放肥| 亚洲欧洲国产成人精品| 国产在线ts人妖免费视频| 久久国产一片免费观看| 亚洲熟妇无码久久精品| 全黄a免费一级毛片人人爱| 国产午夜无码精品免费看| 亚洲Av高清一区二区三区| 亚洲精品国产自在久久| 99久久精品免费视频| 国产精品亚洲综合网站|