石頭JAVA擺地?cái)們?/a>

          JAVA所有的討論-要一點(diǎn)一點(diǎn)的進(jìn)步

            BlogJava :: 首頁(yè) ::  :: 聯(lián)系 ::  :: 管理 ::
            30 隨筆 :: 0 文章 :: 11 評(píng)論 :: 0 Trackbacks
          1.hibernate 3.1的lazy默認(rèn)值是true,需要注意。

          2.針對(duì)這幾天的代碼:
              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時(shí)就會(huì)出現(xiàn)錯(cuò)誤,終其原因就是3.1默認(rèn)就是延遲加載,在內(nèi)部NEW了一個(gè)代理對(duì)象的引用。當(dāng)加上  System.out.println(jishuchuangxinzhongxin.getBiaoti());這句后,hibernate 3.1初始化代理對(duì)象中的各個(gè)屬性,下一步session.close,雖然session是close關(guān)的,但JSP也可以訪問(wèn)游離對(duì)象,所以不出錯(cuò)。

          3.避免上2條的錯(cuò)誤,解決辦法有二:(1)設(shè)置class標(biāo)記為lazy=false,即非延遲檢索 (2)使用session.get方法來(lái)代替session.load方法。因?yàn)閟ession.get方法是立即檢索策略。

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 青州市| 建水县| 清镇市| 沽源县| 德化县| 固原市| 宜黄县| 伊宁县| 嵊州市| 隆昌县| 麻江县| 哈巴河县| 昌吉市| 满城县| 长阳| 临猗县| 宜兰县| 澄江县| 水城县| 临武县| 潼关县| 洛浦县| 东兴市| 宁波市| 龙江县| 吴忠市| 台前县| 涡阳县| 连云港市| 阳西县| 阿荣旗| 巫山县| 故城县| 美姑县| 泸水县| 珠海市| 耿马| 综艺| 乐亭县| 乌拉特后旗| 资兴市|