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

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

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

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825709
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

    Hibernate 提供了 3 種檢索策略:

    l        延遲檢索;

    l        立即檢索;

    l        迫切左外連接;

    Hibernate 提供 2 種方式來確定檢索策略,一中是在配置文件當中,另外一種是在程序種設置。當然,如果你在程序中設置了檢索策略,那么你在配置文件中的設置也就無效了。另外的一種情況是 HQL 會忽略配置文件的設置,而總是采用迫切左外連接。

    一、 類級別的檢索

    可以選擇的檢索策略是立即檢索和延遲檢索,默認的是立即檢索。用配置文件中的 <class> 節點的 lazy 來控制。

    注意:不管你在配置 class lazy true 還是 false ,對 get() create Criteria () 方法都不起作用,只有對 load() 方法起作用。

    當你使用的檢索策略是 lazy 的時候,當你執行

    Customer customer = (Customer)session.load(Customer.class,new Long(1));

    的時候, Hibernate 不從數據庫檢索數據,而只是產生一個代理類,只有當你執行

    Customer.getName();

    的時候, Hibernate 才到數據庫取數據。所以,如下的代碼是會被拋出異常的:

    Session session  =  sessionFactory.openSession();
    transaction tx 
    =   null ;
    tx 
    =  session.beginTransaction();
      Customer customer 
    =  (Customer)session.load(Customer. class , new  Long( 1 ));
    tx.commit();
      session.close();
    customer.getName();

    get() 方法總是用的立即檢索,如果和它相關聯的類也是用的立即檢索,那么也會把相關聯的數據也檢索出來。

    二、 一對和多對多關聯檢索

    一般地,為了有減少對數據庫的訪問,我們往往用延遲檢索的策略。所以,我們優先使用如下方式;

    <set class=”order” inverse=”true’ lazy=”true” >

    但是,我們在檢索“多”的一方的時候, Hibernate 不能為我們產生代理類。由此,我們就要用 betch-size 的配置來減少 SQL 語句。

    當我們使用 outer-join 屬性的時候,我們就沒有必要使用 lazy 屬性了。 Outer-join 會一次將“一”方和與之相關的“多”方用左外連接的方式檢索出來。

    Session session = sessionFactory.openSession();

                         Transaction tx = null;

                         tx = session.beginTransaction();

                        Customer customer = (Customer)session.get(Customer.class,new Long(1));

    產生的 SQL 語句如下:

    Hibernate: select customer0_.ID as ID1_, customer0_.NAME as NAME2_1_, orders1_.CUSTOMER_ID as CUSTOMER3_3_, orders1_.ID as ID3_, orders1_.ID as ID0_, orders1_.ORDER_NUMBER as ORDER2_1_0_, orders1_.CUSTOMER_ID as CUSTOMER3_1_0_ from sampledb.customers customer0_ left outer join sampledb.orders orders1_ on customer0_.ID=orders1_.CUSTOMER_ID where customer0_.ID=?



    posted on 2007-09-16 14:48 Ke 閱讀(719) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 一区二区视频免费观看| 亚洲午夜久久久精品影院| 亚洲一区二区三区国产精品无码| a毛片成人免费全部播放| 亚洲午夜福利精品无码| 美女露隐私全部免费直播| 国产成人免费全部网站| 亚洲AV无码一区二区三区久久精品| 亚洲欧洲免费无码| 亚洲第一第二第三第四第五第六| 日本免费一区二区在线观看| 日本不卡视频免费| 亚洲国产成人久久综合区| 亚洲日韩国产精品第一页一区| aa级毛片毛片免费观看久| 30岁的女人韩剧免费观看| 亚洲高清中文字幕| 成人免费一级毛片在线播放视频| 精品国产成人亚洲午夜福利| 免费无遮挡无码永久视频| 亚洲白色白色在线播放| 国产又黄又爽胸又大免费视频| 亚洲无码在线播放| 99在线在线视频免费视频观看| 亚洲人成网站在线观看播放动漫| 在线观看免费a∨网站| 黄色免费网址在线观看| 亚洲国产精品成人精品无码区| 最近2019年免费中文字幕高清 | 亚洲?V无码乱码国产精品| 两个人看的www免费视频| 亚洲精品免费在线| 午夜亚洲av永久无码精品| 久久aa毛片免费播放嗯啊| 国产亚洲玖玖玖在线观看| 亚洲午夜福利精品久久| 一色屋成人免费精品网站| 人人公开免费超级碰碰碰视频| 亚洲精品高清视频| 免费大片黄手机在线观看| 久久午夜羞羞影院免费观看|