石頭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擺地攤兒 閱讀(671) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 黑河市| 陇南市| 朝阳县| 台北县| 石棉县| 崇礼县| 沙田区| 锡林郭勒盟| 思茅市| 嘉峪关市| 临夏市| 博湖县| 娄底市| 博爱县| 阿尔山市| 康乐县| 内黄县| 莆田市| 页游| 广水市| 海安县| 临夏县| 侯马市| 廉江市| 清河县| 襄樊市| 大宁县| 政和县| 仁寿县| 克拉玛依市| 五河县| 敦煌市| 平山县| 永嘉县| 睢宁县| 温州市| 肃南| 常宁市| 嘉定区| 安岳县| 许昌市|