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

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

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

    byterat

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      54 隨筆 :: 0 文章 :: 15 評論 :: 0 Trackbacks

    原文出自: http://m.tkk7.com/waterye/archive/2005/08/23/10836.aspx

    OpenSessionInView模式

    Spring+Hibernate中,? 集合映射如果使用lazy="true", 當PO傳到View層時, 出現未初始化session已關閉的錯誤,只能在dao先初始化
    parent.getChilds().size();

    Spring提供Open Session In View來解決這個問題, 有兩種方式
    1. Interceptor
    ??? <!-- ?===========?OpenSession?In?View?pattern?============== -->
    ????
    < bean? id ="openSessionInViewInterceptor"
    ??????????class
    ="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor" >
    ????????
    < property? name ="sessionFactory" ?ref ="sessionFactory" />
    ????
    </ bean >

    ????
    < bean? id ="urlMapping" ?class ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
    ????????
    < property? name ="interceptors" ?ref ="openSessionInViewInterceptor" />
    ????????
    < property? name ="mappings" >
    ????????????
    < props >
    ??????????? ......
    ????????????
    </ props >

    ????????
    </ property >
    ????
    </ bean >
    2. Filter
    < web-app >
    ?
    < filter >
    < filter-name > hibernateFilter </ filter-name >
    < filter-class >
    org.springframework.orm.hibernate.support.OpenSessionInViewFilter
    </ filter-class >
    </ filter >
    ?
    < filter-mapping >
    < filter-name > hibernateFilter </ filter-name >
    < url-pattern > *.do </ url-pattern >
    </ filter-mapping >

    </ web-app >

    說明: 個人更喜歡用Interceptor方式, filter是在web.xml中定義
    有了OpenSessionInView,并不是一切就ok了。簡單的crud可以,但對于復雜業務邏輯就要想點法子。

    OSIV默認是request per session的, 所以即使沒有顯式update(po),Hibernate也會幫你保存的,dao的業務判斷就無效,還好有evict()可用。
    update code
    // Controller
    public
    ?ModelAndView?update()?{
    ????p?
    =
    ?dao.getVo(id);
    ????bindObject(request);
    ????dao.update(p);
    }

    // Dao
    public
    ?Object?getVo(id)?{
    ????p?
    =
    ?getHibernateTemplate().get(clazz,?id);
    ????p.getChilds().size();
    ????getHibernateTemplate().evict(p);
    ????
    return
    ?p;
    }

    public ? void
    ?update(p)?{
    ????oldP?
    =
    ?getVo(id);
    ????
    // ?++--(oldP);

    ????getHibernateTemplate().update(p);
    ????
    // ?++--(p);

    }
    posted on 2007-01-19 15:33 比特鼠 閱讀(309) 評論(0)  編輯  收藏 所屬分類: Java Frameworks
    主站蜘蛛池模板: 亚洲欧美日韩久久精品| 精选影视免费在线 | 亚洲综合久久综合激情久久 | 久久综合日韩亚洲精品色| 免费视频精品一区二区| 午夜私人影院免费体验区| 亚洲欧洲视频在线观看| 亚洲变态另类一区二区三区| 久草视频在线免费| 毛片基地免费视频a| 亚洲乱码中文字幕小综合| 在线永久看片免费的视频| vvvv99日韩精品亚洲| 国产亚洲视频在线观看网址| 国外成人免费高清激情视频| 亚洲欧美日韩中文高清www777 | 精品无码一级毛片免费视频观看 | 亚洲国产激情一区二区三区| 亚洲免费在线播放| 国产亚洲欧美在线观看| 国产精品麻豆免费版| 亚洲国产精品一区二区久久| 99在线观看免费视频| 亚洲人成色77777在线观看大| 久久久久亚洲AV无码专区首JN| 亚洲精品理论电影在线观看| 国产免费怕怕免费视频观看| 免费大片黄在线观看| 在线播放亚洲第一字幕| 亚洲国产AV一区二区三区四区| 日韩在线视频免费看| 一区免费在线观看| 国产精品极品美女免费观看| 日日躁狠狠躁狠狠爱免费视频| 亚洲国产成人乱码精品女人久久久不卡 | 国产成人精品日本亚洲11| 国产午夜精品久久久久免费视| 亚洲成色在线影院| 免费在线观影网站| 久99精品视频在线观看婷亚洲片国产一区一级在线| 特级毛片全部免费播放a一级|