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

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

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

    隨筆-61  評論-159  文章-0  trackbacks-0
           用hibernate的ORM框架有一段時間了,現(xiàn)在來回顧一下Seesion中的load和get。
           一、get不支持lazy,load支持lazy。
           二、采用get加載數(shù)據(jù),如果沒有匹配的數(shù)據(jù),返回null,而load則拋出異常。
           get的例子:
     1public void testGetMethod() {
     2        Session session = null;
     3        try {
     4            session = HibernateUtils.getSession();
     5            session.beginTransaction();
     6            
     7            //馬上發(fā)出查詢sql,加載User對象
     8            User user = (User)session.get(User.class"402880d01b9bf210011b9bf2c2ff0002");
     9            System.out.println("user.name=" + user.getName());
    10            
    11            user.setName("張三");
    12            session.getTransaction().commit();
    13        }
    catch(Exception e) {
    14            e.printStackTrace();
    15            session.getTransaction().rollback();
    16        }
    finally {
    17            HibernateUtils.closeSession(session);
    18        }

    19    }

    PS:在執(zhí)行第8行語句的時候,如果數(shù)據(jù)庫有相關(guān)的記錄,則立刻發(fā)出sql語句,即使是沒有第9行中user.getName()方法調(diào)用,如果沒有匹配的記錄則返回來一個null。

            load方法例子:
     1public void testLoadMethod() {
     2        Session session = null;
     3        try {
     4            session = HibernateUtils.getSession();
     5            session.beginTransaction();
     6            
     7            //不會發(fā)出查詢sql,因為load方法實現(xiàn)了lazy(懶加載或延遲加載)
     8            //延遲加載:只有真正使用這個對象的時候,才加載(發(fā)出sql語句)
     9            //hibernate延遲加載實現(xiàn)原理是代理方式
    10            User user = (User)session.load(User.class"402880d01b9bf210011b9bf2b2ff0002");
    11            System.out.println("user.name=" + user.getName());
    12            user.setName("李四");
    13            session.getTransaction().commit();
    14        }
    catch(Exception e) {
    15            e.printStackTrace();
    16            session.getTransaction().rollback();
    17        }
    finally {
    18            HibernateUtils.closeSession(session);
    19        }

    20    }

    PS:在執(zhí)行到10句代碼的時候并沒有立刻發(fā)出sql語句,由于load實現(xiàn)了lazy延遲加載,延遲加載只有真正使用該對象的時候才進行加載,發(fā)出sql語句,關(guān)鍵是11句代碼。如果load方法里面的id在數(shù)據(jù)庫表里面沒有相關(guān)的,則會發(fā)出ObjectNotFoundException異常。

    PSPS:可以通過設(shè)置斷點,用debug來跟蹤相關(guān)變量跟對象的改變,這樣就可以很清晰理解load和get這兩個方法。


    -------------------------------------------------------------------------------------------------
    PS:本博客文章,如果沒有注明是有“轉(zhuǎn)”字樣,屬于本人原創(chuàng)。如果需要轉(zhuǎn)載,務(wù)必注明作者文章的詳細出處地址,否則不允許轉(zhuǎn)載,多謝合作!
    posted on 2008-10-09 20:38 apple0668 閱讀(446) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 亚洲AV人无码激艳猛片| 免费无码A片一区二三区| www成人免费观看网站| 国产亚洲日韩在线a不卡| 亚洲av无码有乱码在线观看| 午夜在线a亚洲v天堂网2019| 亚洲精品人成网在线播放影院| 亚洲人成人网毛片在线播放| 国产99在线|亚洲| 亚洲国产成人99精品激情在线| 亚洲国产成人久久99精品| 亚洲av无码国产综合专区| 亚洲一级毛片免费观看| 亚洲不卡影院午夜在线观看| 亚洲熟妇少妇任你躁在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 色噜噜亚洲男人的天堂| 成人区精品一区二区不卡亚洲| 亚洲第一区二区快射影院| 亚洲s码欧洲m码吹潮| 免费国产黄网站在线观看动图 | 国产亚洲真人做受在线观看| 国产∨亚洲V天堂无码久久久| 久久国产精品亚洲综合| 亚洲欧洲精品一区二区三区| 亚洲欧洲国产视频| 亚洲欧美日韩一区二区三区| 农村寡妇一级毛片免费看视频| 国产99视频精品免费视频76| 毛片在线全部免费观看| 日本免费xxxx| 国产大片91精品免费看3| 亚洲人色婷婷成人网站在线观看| 亚洲成av人影院| 亚洲熟妇无码爱v在线观看| 亚洲色大网站WWW永久网站| 日本视频免费观看| a级在线观看免费| 91网站免费观看| 国产一级理论免费版| 久久91亚洲人成电影网站|