隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          HQL進階

          HQL優化


          避免or操作


          where
          子句包含or
          操作,執行時不使用索引


          from
          House
          where
          street_id
          =
          '1000'
          or
          street_id
          =
          '1001'


          可以使用in條件來替換


          from
          House
          where
          street_id
          in
          ('1001','1000')



          避免使用not


          where
          子句包含not
          關鍵字,執行時該字段的索引失效


          from House as h where
          not
          (h.price
          >1800)


          使用比較運算符替換not


          from
          House as h
          where
          h.price
          <=
          1800



          避免like的特殊形式



          查詢時,盡可能少使用
          like


          避免having子句


          盡可能在where
          子句中指定條件


          避免使用distinct


          在不要求或允許冗余時,應避免使用distinct



          Hibernate數據檢索策略


          Hibernate提供多種數據檢索策略,常用的有:



          立即檢索



          延遲檢索


          不同檢索策略的作用域及默認檢索策略



          作用域 可選的檢索策略
          默認的檢索策略 運行時行為受影響的檢索方法


          類級別 立即檢索/延遲檢索 延遲檢索 僅影響Sessionload()方法



          關聯級別 立即檢索/延遲檢索 延遲檢索 影響Sessionload()get()




          檢索策略的運行機制



          類型


          立即檢索


          類級別


          立即加載檢索方法指定的對象


          關聯級別


          立即加載與檢索方法指定的對象關聯的對象,可以設定批量檢索數量


          優點


          對應用程序完全透明,不管對象處于持久化狀態,還是游離狀態,應用程序都可以方便地從一個對象導航到與它關聯的對象缺點


          (1)select語句數目多


          (2)可能會加載應用程序不需要訪問的對象,造成內存空間的浪費


          ---------------------------


          類型


          延遲檢索


          類級別


          延遲加載檢索方法指定的對象


          關聯級別


          延遲加載與檢索方法指定的對象關聯的對象,可以設定批量檢索數量


          優點


          由應用程序決定需要加載那些對象,可以避免執行多余的select語句,以及避免加載應用程序不需要訪問的對象。提高檢索性能,節省內存空間


          缺點


          應用程序如果希望訪問游離狀態的代理類實例,必須保證它在持久化狀態時已經被初始化







          設定檢索策略的常用屬性


          屬性


          lazy


          類級別


          1.<class>元素中lazy屬性的可選值為:true(延遲檢索)和false(立即檢索)


          2.
          <class>
          元素中lazy屬性的默認值為true


          一對多關聯級別


          1.<set>元素中lazy屬性的可選值為:true(延遲檢索)、false(立即檢索)和extra(增強延遲檢索)


          2.
          <set>
          元素中lazy屬性的默認值為true


          多對一關聯級別


          1.<many-to-one>元素中的lazy屬性的可選值為:proxy(延遲檢索)、no-proxy(無代理延遲檢索)和false(立即檢索)


          2.<many-to-one>元素中的lazy屬性的默認值為true


          --------------------------------------------


          屬性


          fetch


          類級別



          沒有此屬性


          一對多關聯級別



          1.<set>元素中fetch屬性的可選值為:select(查詢語句)、subselect(子查詢語句)和join(迫切左外連接檢索)


          2.
          <set>
          元素的fetch屬性的默認值為select


          多對一關聯級別



          1.<many-to-one>元素中fetch屬性的可選值為:select(查詢語句)和join(迫切左外連接檢索)


          2.<many-to-one>元素的fetch屬性的默認值為select



          HQL 聯接查詢


          內聯接:inner
          join


          最典型、最常用的聯接查詢


          兩個表存在主外鍵關系時通常會使用內聯接查詢



          外聯接

          左外聯接:left
          join

          left
          outer join

          右外聯接:right
          join
          right
          outer join

          完整外聯接:full
          join

          full
          outer join


          聯接類型
          HQL語法

          內聯接
          inner
          join

          join

          迫切內聯接 inner
          join fetch

          join
          fetch

          左外聯接 left
          outer join

          left
          join

          迫切左外聯接 left
          outer join fetch

          left
          join
          fetch

          右外聯接
          right
          outer join

          right
          join

          適用范圍

          適用于有關聯關系的持久化類,并且在映射文件中對這種關聯關系中作了映射


          Hibernate接語法如下


          from
          Entity
          inner
          join
          [fetch]
          Entity.property


          from
          Entity
          left
          join
          [fetch]
          Entity.property


          from
          Entity
          right
          join
          [fetch]
          Entity.property

          posted on 2012-04-22 15:52 hantai 閱讀(125) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 孝感市| 平果县| 高阳县| 崇阳县| 宝鸡市| 绥芬河市| 和硕县| 周宁县| 安塞县| 娄烦县| 焦作市| 永丰县| 上林县| 博乐市| 达拉特旗| 宣城市| 郓城县| 大悟县| 衢州市| 平原县| 遵义市| 怀化市| 德格县| 灵台县| 贺州市| 望谟县| 清涧县| 犍为县| 正阳县| 呼和浩特市| 和静县| 连江县| 西畴县| 恭城| 高安市| 罗甸县| 中方县| 内江市| 都江堰市| 娄烦县| 门头沟区|