<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框架有一段時間了,現在來回顧一下Seesion中的load和get。
           一、get不支持lazy,load支持lazy。
           二、采用get加載數據,如果沒有匹配的數據,返回null,而load則拋出異常。
           get的例子:
     1public void testGetMethod() {
     2        Session session = null;
     3        try {
     4            session = HibernateUtils.getSession();
     5            session.beginTransaction();
     6            
     7            //馬上發出查詢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:在執行第8行語句的時候,如果數據庫有相關的記錄,則立刻發出sql語句,即使是沒有第9行中user.getName()方法調用,如果沒有匹配的記錄則返回來一個null。

            load方法例子:
     1public void testLoadMethod() {
     2        Session session = null;
     3        try {
     4            session = HibernateUtils.getSession();
     5            session.beginTransaction();
     6            
     7            //不會發出查詢sql,因為load方法實現了lazy(懶加載或延遲加載)
     8            //延遲加載:只有真正使用這個對象的時候,才加載(發出sql語句)
     9            //hibernate延遲加載實現原理是代理方式
    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:在執行到10句代碼的時候并沒有立刻發出sql語句,由于load實現了lazy延遲加載,延遲加載只有真正使用該對象的時候才進行加載,發出sql語句,關鍵是11句代碼。如果load方法里面的id在數據庫表里面沒有相關的,則會發出ObjectNotFoundException異常。

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


    -------------------------------------------------------------------------------------------------
    PS:本博客文章,如果沒有注明是有“轉”字樣,屬于本人原創。如果需要轉載,務必注明作者文章的詳細出處地址,否則不允許轉載,多謝合作!
    posted on 2008-10-09 20:38 apple0668 閱讀(446) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 国产情侣激情在线视频免费看| 人妻免费久久久久久久了| 蜜桃视频在线观看免费视频网站WWW| 免费国产精品视频| 色窝窝亚洲av网| 亚洲成av人片天堂网老年人| 成人一级免费视频| 亚洲人成在线播放网站| 日韩免费的视频在线观看香蕉| 亚洲人成电影福利在线播放| 亚洲视频免费一区| 亚洲日本成本人观看| 午夜国产羞羞视频免费网站| 免费人成网上在线观看| 亚洲精品无码久久久影院相关影片| 中文字幕在线免费播放| 亚洲一区影音先锋色资源| 曰批视频免费30分钟成人| 亚洲精品无码av中文字幕| 亚洲日韩人妻第一页| 久久免费精品视频| 亚洲的天堂av无码| 日本免费一二区在线电影| 国产精品免费看久久久香蕉| 亚洲第一视频网站| 午夜毛片不卡高清免费| 日韩免费在线中文字幕| 香蕉视频在线观看亚洲| 成人免费视频一区二区三区| 一级**爱片免费视频| 亚洲日本视频在线观看| 免费萌白酱国产一区二区| 免费毛片a线观看| 亚洲欧洲日韩极速播放| 亚洲中文字幕丝袜制服一区| 91精品免费不卡在线观看| 亚洲欧美国产日韩av野草社区| 亚洲伊人久久精品影院| 久久久久免费看黄A片APP| 久久久久女教师免费一区| 久久精品国产亚洲AV久|