<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毛片免费观看网站| 成年人网站在线免费观看| 亚洲图片中文字幕| 西西人体免费视频| 免费永久国产在线视频| 亚洲AV无码一区二区三区网址| 夭天干天天做天天免费看| 豆国产96在线|亚洲| 毛片免费观看的视频| 亚洲欧洲专线一区| 五月婷婷亚洲综合| 亚洲heyzo专区无码综合| 免费观看国产小粉嫩喷水| 国产大片免费天天看| 亚洲av无码成人精品区| 一级毛片免费不卡直观看| 免费v片视频在线观看视频| 国产成人亚洲综合网站不卡| 无码人妻精品中文字幕免费| 4338×亚洲全国最大色成网站| 亚洲国产精品无码久久98 | 精品一区二区三区高清免费观看| 无码国产精品一区二区免费式直播| 国精无码欧精品亚洲一区| 深夜福利在线视频免费| 亚洲精品岛国片在线观看| 免费人成网站永久| 亚洲电影中文字幕| 永久黄网站色视频免费直播| 中国一级特黄的片子免费| 亚洲制服丝袜在线播放| 色播精品免费小视频| 亚洲一区二区免费视频| 欧美日韩国产免费一区二区三区| 国产成人亚洲午夜电影| 亚洲日本在线观看|