Hibernate架構對查詢功能最佳化(2)

來源:互聯網
上載者:User

標籤:發送   預設   fetch   bsp   架構   str   for   基本   extra   

1. 查詢策略:使用Hibernate查詢一個對象的時候,查詢其關聯對象.應該如何查詢.是Hibernate的一種最佳化手段!!!

2. Hibernate架構的檢索策略解決的問題

   * 查詢的時機

      Customer c1 = (Customer) session.get(Customer.class, 1);

      System.out.println(c1.getLinkmans().size());

      * lazy屬性解決查詢的時機的問題,需要配置是否採用消極式載入!!

   * 查詢的語句形式

      List<Customer> list = session.createQuery("from Customer").list();

      for(Customer c : list){

        System.out.println(c.getLinkmans()); }

   * fetch屬性就可以解決查詢語句的形式的問題!!

      set標籤上配置策略

 1. 在<set>標籤上使用fetch和lazy屬性

  * fetch的取值 -- 控制SQL語句產生的格式

    * select -- 預設值.發送查詢語句

    * join -- 串連查詢.發送的是一條迫切左外串連!!!配置了join.lazy就失效了

    * subselect -- 子查詢.發送一條子查詢查詢其關聯對象.(需要使用list()方法進行測試)

  * lazy的取值 -- 尋找關聯對象的時候是否採用延遲!

    * true -- 預設.延遲

    * false -- 不延遲

    * extra -- 及其懶惰, 查詢關聯對象的時候 採用比消極式載入更懶惰的方式進行查詢.

2. set標籤上的預設值是fetch="select"和lazy="true"

3. 總結:Hibernate架構都採用了預設值,開發中基本上使用的都是預設值。特殊的情況。

  many-to-one標籤上配置策略

 1. 在<many-to-one>標籤上使用fetch和lazy屬性

   * fetch的取值 -- 控制SQL的格式.

    * select -- 預設。發送基本select語句查詢

    * join -- 發送迫切左外串連查詢

  * lazy的取值 -- 控制載入關聯對象是否採用延遲.

    * false -- 不採用消極式載入.

    * proxy -- 預設值.代理.現在是否採用延遲.

      * 由另一端的<class>上的lazy確定.如果這端的class上的lazy=”true”.proxy的值就是true(消極式載入).

      * 如果class上lazy=”false”.proxy的值就是false(不採用延遲.)

 2. 在<many-to-one>標籤上的預設值是fetch="select"和proxy

Hibernate架構對查詢功能最佳化(2)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.