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

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

            BlogJava :: 首頁 ::  :: 聯(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也可以訪問游離對(duì)象,所以不出錯(cuò)。

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 上饶市| 黄冈市| 岳西县| 金塔县| 繁峙县| 九龙县| 枣庄市| 酉阳| 张家界市| 抚远县| SHOW| 黎川县| 新兴县| 伊宁县| 江山市| 句容市| 吉水县| 遂川县| 虎林市| 大港区| 周至县| 德阳市| 河南省| 宁国市| 都安| 屏山县| 内乡县| 额济纳旗| 库尔勒市| 罗城| 墨竹工卡县| 石嘴山市| 恩施市| 嘉义县| 宜兴市| 常德市| 嘉义市| 南昌县| 博湖县| 中卫市| 库尔勒市|