石頭JAVA擺地攤兒

          JAVA所有的討論-要一點一點的進步

            BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
            30 隨筆 :: 0 文章 :: 11 評論 :: 0 Trackbacks
          1.hibernate 3.1的lazy默認值是true,需要注意。

          2.針對這幾天的代碼:
              public ActionForward execute(ActionMapping mapping, ActionForm form,
                      HttpServletRequest request, HttpServletResponse response) 
          {
                  Session session 
          = hibernate.HibernateSessionFactory.getSession();

                  Jishuchuangxinzhongxin jishuchuangxinzhongxin 
          = (Jishuchuangxinzhongxin) session
                          .load(Jishuchuangxinzhongxin.
          classnew Integer(Integer
                                  .valueOf((String) request.getParameter(
          "id"))
                                  .intValue()));
                  System.out.println(jishuchuangxinzhongxin.getBiaoti());
                  request.setAttribute(
          "jishuchuangxinzhongxin", jishuchuangxinzhongxin);

                  session.close();

                  
          return mapping.findForward("show_jishuchuangxinzhongxin");
              }
          如果去掉  System.out.println(jishuchuangxinzhongxin.getBiaoti());這句后,則findforward到JSP時就會出現錯誤,終其原因就是3.1默認就是延遲加載,在內部NEW了一個代理對象的引用。當加上  System.out.println(jishuchuangxinzhongxin.getBiaoti());這句后,hibernate 3.1初始化代理對象中的各個屬性,下一步session.close,雖然session是close關的,但JSP也可以訪問游離對象,所以不出錯。

          3.避免上2條的錯誤,解決辦法有二:(1)設置class標記為lazy=false,即非延遲檢索 (2)使用session.get方法來代替session.load方法。因為session.get方法是立即檢索策略。
          posted on 2007-09-07 10:46 石頭JAVA擺地攤兒 閱讀(676) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东乡族自治县| 安龙县| 红桥区| 张家川| 苏州市| 怀集县| 东丽区| 新密市| 灵寿县| 通榆县| 驻马店市| 鸡东县| 固安县| 章丘市| 牟定县| 株洲市| 陆川县| 名山县| 临朐县| 大悟县| 厦门市| 开鲁县| 论坛| 偏关县| 澜沧| 马龙县| 兴宁市| 静海县| 孝感市| 葫芦岛市| 林周县| 仁化县| 建昌县| 开远市| 丰镇市| 新乡市| 志丹县| 洪泽县| 阳新县| 唐河县| 达州市|