Hibernate檢索策略和檢索方式

1 Hibernate的檢索策略

Hibernate的檢索策略分爲兩個級別:

  • 類級別的檢索策略:立即檢索、延遲檢索。
  • 關聯級別的檢索策略:立即檢索、延遲檢索還是迫切左外連接檢索。

注意:在類級別上,Session的load()方法可以實現延遲檢索,但是Session的get()和Query接口的list()總是立即檢索。

檢索策略運行機制如圖1-1所示:

圖1-1 檢索策略

在ORM映射文件中可以設置檢索策略:

<class>、<set>、<many-to-one>元素的lazy屬性設置檢索策略,另外<set>、<many-to-one>的fetch屬性,如圖1-2所示:

圖1-2 檢索策略設置

另外,<one-to-one>設置延遲檢索的方式爲:屬性constrained="true"。

採用延遲檢索返回的是代理類的實例:

  • Hibernate在運行時動態生成,繼承了要檢索類的所有屬性和方法。
  • 僅初始化了OID屬性
  • 第一次訪問此代理類時(getId()方法除外),Hibrenate對其進行初始化,從數據庫中加載對象的數據。


2 Hibernate的檢索方式

  • HQL檢索方式——最爲常用,跨平臺
  • QBC檢索方式——跨平臺
  • SQL檢索方式——與數據庫綁定
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章