<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
    主站蜘蛛池模板: 91成人免费在线视频| 无码av免费网站| 免费观看男人免费桶女人视频| 亚洲黄色在线电影| 18未年禁止免费观看| 亚洲国产视频一区| 美女视频黄的全免费视频网站| 青青免费在线视频| 人妻免费一区二区三区最新| 999在线视频精品免费播放观看| 亚洲国产精久久久久久久| 日韩视频免费在线观看| 亚洲好看的理论片电影| 久久WWW免费人成一看片| 亚洲国产精品乱码在线观看97| 2021国产精品成人免费视频| 亚洲精品天堂成人片AV在线播放| 午夜色a大片在线观看免费| 涩涩色中文综合亚洲| 国产免费av片在线无码免费看| 校园亚洲春色另类小说合集 | 一级女性全黄生活片免费看| 久久久久久久亚洲精品| a毛片在线免费观看| 亚洲A∨午夜成人片精品网站| 又大又硬又粗又黄的视频免费看| 337p日本欧洲亚洲大胆裸体艺术| 亚洲熟妇无码av另类vr影视| 99在线免费观看视频| 亚洲国产系列一区二区三区| 大胆亚洲人体视频| 可以免费观看的毛片| 亚洲第一区二区快射影院| 国产免费小视频在线观看| 爱丫爱丫影院在线观看免费| 亚洲国产电影在线观看| 亚洲国产成人久久笫一页| 色欲国产麻豆一精品一AV一免费| 亚洲色无码专区一区| 亚洲大尺度无码无码专区| 成人无码区免费视频观看|