日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

EJB3的延遲加載與Hibernate的問題_袁華的博客

 Long_way 2008-01-30
EJB3的延遲加載與Hibernate的問題
2007年01月12日 星期五 10:44

在MVC框架中,以前經(jīng)典的都是用struts/webwork+Hibernate+Spring來做的。但這樣做在延遲加載時(shí)會(huì)有個(gè)問題,即:
serviceA中通過DAO從數(shù)據(jù)庫里取得一些實(shí)例化的Model供Action使用,在service返回后,后臺(tái)hibernate的session實(shí)際就結(jié)束了。若使用了延遲加載,此時(shí)再想訪問這些具備one-to-many映射的model的“多”的一方時(shí)就會(huì)扔出異常,報(bào)告session已關(guān)閉,即使fetchType.EAGER也一樣。正因?yàn)槿绱耍琒pring才提出一個(gè)OpenSessionInView的解決辦法,但該辦法實(shí)際也不是萬能的,有時(shí)一樣出錯(cuò)。這種情況在EJB3也是存在的,當(dāng)實(shí)體Bean返回給客戶端的時(shí)候,這時(shí)的實(shí)體Bean已經(jīng)脫離了容器的管理,若使用了延遲加載,在獲取“多”的一方時(shí)就會(huì)扔出異常,要想解決這個(gè)問題,在EJB3.0中可以在返回給客戶端前先加載“多”的一方,如:order.getOrderItems().size(); 。另外你也可以使用fetchType.EAGER屬性明確指出在得到“一”的同時(shí)得到“多”,這在EJB3中是OK的。還可以使用join fetch語句同時(shí)得到“

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多