Hibernate 之 懶載入
懶載入/延遲載入
1. 延遲載入先獲取到代理物件,當真正使用到該物件中的屬性的時候,才會傳送SQL語句,是Hibernate框架提升效能的方式
2. 類級別的延遲載入
* Session物件的load方法預設就是延遲載入
* Customer c = session.load(Customer.class, 1L);沒有傳送SQL語句,當使用該物件的屬性時,才傳送SQL語句
* 使類級別的延遲載入失效
* 在<class>標籤上配置lazy=”false”
* Hibernate.initialize(Object proxy);
3. 關聯級別的延遲載入(查詢某個客戶,當檢視該客戶下的所有聯絡人是是否是延遲載入)
* 預設是延遲載入
Session session = HibernateUtils.getCurrentSession();
Transaction tr = session.beginTransaction();
Customer c = session.get(Customer.class, 1L);
System.out.println("=============");
System.out.println(c.getLinkmans().size());
tr.commit();
技術分析之Hibernate框架的查詢策略
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框架都採用了預設值,開發中基本上使用的都是預設值。特殊的情況。
技術分析之在man-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 基本操作、懶載入以及快取快取
- Hibernate 懶載入 Unable to evaluate the expression Method threw ‘org.hibernate.LazyInitializationExceptExpress
- 懶載入之intersection observerServer
- 懶載入
- 前端優化之圖片懶載入前端優化
- 懶載入和預載入
- Ribbon - 懶載入
- VUE系列之效能最佳化--懶載入Vue
- 【譯】懶載入元件元件
- 圖片懶載入
- vue路由懶載入Vue路由
- Vue元件懶載入Vue元件
- Vue 的懶載入Vue
- 圖片預載入和懶載入
- Vue 路由按需載入(路由懶載入)Vue路由
- Vue圖片懶載入之lazyload外掛使用Vue
- 前端效能優化 --- 懶載入&預載入前端優化
- 圖片懶載入(IntersectionObserver)Server
- 關於懶載入原理
- Fragment 懶載入實踐Fragment
- 圖片懶載入原理
- vue(18)路由懶載入Vue路由
- 我的前端筆記之 懶載入 與 節流前端筆記
- 手把手實現圖片懶載入+封裝vue懶載入元件封裝Vue元件
- [譯] React 16.6 懶載入(與預載入)元件React元件
- 圖片懶載入踩坑
- 圖片懶載入大白話
- Android優化--Fragment懶載入Android優化Fragment
- Js圖片懶載入(lazyload)JS
- 單張圖片懶載入
- 圖片懶載入實現
- dva中元件的懶載入元件
- DCL懶載入單例模式單例模式
- Laravel Eloquent中的 懶載入VS即時載入Laravel
- 頁面圖片預載入與懶載入策略
- VIM Lazy Load 懶載入/延遲載入技術
- 滾動載入圖片(懶載入)實現原理
- 1道面試題---懶載入和預載入面試題