有關hibernate相關的延遲載入和快取機制

2021-08-08 18:42:08 字數 1928 閱讀 8996

1、延遲載入:

當真正需要資料時才從資料庫中載入,目的就是為了提高執行效率

注意:當載入延遲載入的資料時,如果session關閉,那麼就會出現no session的異常,從而導致延遲載入的資料

無法載入

2、延遲載入分類:

1、實體級別的延遲載入

,只對load方法有效

2、集合關聯屬性的延遲載入

集合屬性延遲載入對於程式的效能提公升最為明顯。

建議使用lazy="extra"提高集合屬性的效率,功能除了具備lazy="true"功能外,還可以根據對集合屬性不同操作

傳送不同的sql語句,比如呼叫集合屬性的size、isempty方法時,它會傳送select count(*)

3、單端關聯屬性的延遲載入

4、普通屬性的延遲載入

3、抓取策略:

用於定義怎麼去獲取關聯屬性

在關聯屬性的標籤中都乙個屬性fetch,通過fetch屬性指定關聯的物件怎麼取

預設的fetch="select" 

如果設定為fetch="join",使用左外連線將主體和關聯物件立即載入出來,只對get和load方法,在hql語句需要立即抓取關聯屬性通過fetch關鍵字

如果設定為fetch="subselect",如果使用get或者load方法載入主體物件,那麼傳送查詢語句,如果hql語句查詢主體物件,關聯物件通過子查詢抓取

batch-size : 有效的減少1+n產生的sql語句

4、快取:

什麼是快取:應用程式維持的記憶體,記憶體中放置一些常用的資料,以便提高程式讀取資料效率

5、快取的分類:

事務級別的快取:

適用於經常被不同執行緒進行刪除或者修改運算元據,事務級別的快取適用於單執行緒環境

session級別的快取 就是事務級別的快取,或者叫做一級快取

應用程式級別:

不經常修改的通用性資料放置到應用程式級別的快取中,讓多個事務共享這些資料

sessionfactory級別的快取 就屬於應用程式級別的快取,或者叫做二級快取

集群級別:

集群環境下,不同伺服器上的應用程式如果維持自己的快取,那麼就會導致集群中多個伺服器之間的快取資料無法同步,就需要集群級別快取

集群環境下的快取伺服器程式:redis 

6、hibernate中的快取

1、一級快取:session級別的快取,在hibernate中session級別快取已經由hibernate,一級快取中的資料控制由hibernate自行維護,

不需要開發人員設定、維護。一級快取中只能儲存持久化狀態的實體物件 。hibernate提供了兩個方法可以讓開發人員對一級快取進行有限的管理

void flush() 重新整理快取,強制將快取中資料和資料庫中資料進行同步

void clear() 清空快取

2、二級快取:sessionfactory級別的快取,在hibernate預設並沒有開啟二級快取,hibernate也沒提供可以應用到企業級開發環境的快取實現

所以在hibernate如果需要使用二級快取,應用選擇hibernate支援的第三方的快取實現,然後開啟二級快取

二級快取中只能放置實體物件,而且是那些不經常修改並且經常被多個session訪問的資料應用放置到二級快取

7、如何使用二級快取

1、選擇hibernate支援的第三方快取實現,構建到我們專案中

2、配置快取、並且在hibernate的配置中啟用二級快取

1、將ehcache的配置檔案ehcache.xml放置到當前專案的src下

2、在hibernate.cfg.xml中開啟二級快取,並且指定二級快取的提供商

true

org.hibernate.cache.ehcache.ehcacheregionfactory

3、在hibernate對映檔案中指定哪些實體需要使用二級快取,並且指定二級快取的使用策略

在使用二級快取的實體對映檔案中加入

有關hibernate的查詢

hibernate查詢方式舉例 1 單個物件 a query query session.createquery from consortbean a where a.person.id query.setstring 0,pb.getid 引數從零開始 list list query.list b...

load和get之Hibernate的延遲載入機制

在hibernate中 如果你使用load方法,hibernate認為該id對應的物件 資料庫記錄 在資料庫中是一定存在的,所 以它可以放心的使用,它可以放心的使用 來延遲載入該物件。在用到物件中的其他屬性資料時才查詢資料庫,但是萬一資料庫中不存在該記錄,那沒辦法,只能拋異常 objectnotfo...

有關web的相關知識

今天的主要內容 一 web應用的相關知識 1 桌面應用程式c s和web應用程式b s 2 http協議 3 rul 4 web伺服器軟體 5 的系統的組成 二 安裝伺服器軟體tomcat 獲取 站點 http是一種無狀態的協議 是乙個簡單的請求響應序列 test.html的定為,資源定為。url統...