有關hibernate快取機制介紹
hibernate一級快取
1.Hibernate一級快取又稱為“Session快取”,“會話級快取”。
2.透過Session從資料庫查詢實體時會把實體在記憶體中儲存起來,下一次查詢同一實體時不再從資料庫獲取,而是從記憶體中獲取,這就是快取
#3.一級快取的生命週期和Session相同,Session銷毀,它也銷毀。
4.一級快取中的資料可適用範圍在目前會話之內。
why(為什麼要用Hibernate快取?)
Hibernate是持久層框架,經常存取實體資料庫。
為了降低應用程式對實體資料來源存取的頻次,從而提高應用程式的運作效能。
快取內的資料是對實體資料來源中的資料的複製,應用程式在運行時從快取讀寫數據,在特定的時刻或事件會同步快取和實體資料來源的資料
what( Hibernate快取原理是怎樣的? )Hibernate快取包括兩大類:Hibernate一級快取和Hibernate二級快取。
1.Hibernate一級快取又稱為「Session的快取」。
Session內建不能被卸載,Session的快取是交易範圍的快取(Session物件的生命週期通常對應一個資料庫事務或一個應用事務)。
一級快取中,持久化類別的每個實例都具有唯一的OID。
2.Hibernate二級快取又稱為「SessionFactory的快取」。
由於SessionFactory物件的生命週期和應用程式的整個過程對應,因此Hibernate二級快取是進程範圍或叢集範圍的緩存,有可能出現並發問題,因此需要採用適當的並發存取策略,該策略為被快取的資料提供了交易隔離等級。
第二級快取是可選的,是一個可配置的插件,預設下SessionFactory不會啟用這個插件。
Hibernate提供了org.hibernate.cache.CacheProvider介面,它充當快取插件與Hibernate之間的適配器。
什麼樣的資料適合存放到第二層快取?
1) 很少被修改的數據
2) 不是很重要的數據,允許出現偶爾並發的數據
3) 不會被並發訪問的數據
4) 常量數據
不適合存放到第二級快取的資料?
1) 經常被修改的數據
2) 絕對不允許出現並發訪問的數據,如財務數據,絕對不允許出現並發
3) 與其他應用共享的數據。
#管理第一層快取的API
1.evict(),用於將某個物件從Session的一級快取中清除。
2.clear(),用於將一級快取中的所有物件全部清除。
Qurey.list()和Qurey.iterate()
1.Qurey.list()查詢數據,不會從一級快取中查找,直接向資料庫傳送sql語句,將查詢傳回的物件保留在快取中。
2.Qurey.iterate()不從一級快取中找,直接向資料庫發送sql,查詢id,當需要使用對像其他屬性的時候,先在快取中根據id查找對象,如果沒有則向資料庫傳送sql查詢,因此單獨用該方法查詢會產生N+1問題(即向資料庫傳送N+1條語句查詢N個物件的資訊)
3.如果存在這種需求:在兩個不同的session都需要對相同的物件進行訪問,透過Qurey.list()需要發送兩個sql語句甚至更多,為了避免可以設定二級緩存,在第一個session中Query.list() ,在第二個session中直接透過Qurey.iterate()迭代從二級快取中取得
hibernate二級快取(SessionFactory快取)
1.新增在hibernate.cfg.xml裡面的設定
<!-- 开启二级缓存 --><property name="hibernate.cache.use_second_level_cache">true</property><!-- 二级缓存的提供类 在hibernate4.0版本以后我们都是配置这个属性来指定二级缓存的提供类--><property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property><!-- 二级缓存配置文件的位置 --><property name="hibernate.cache.provider_configuration_file_resource_path">ehcache.xml</property>
2.設定ehcache.xml具體見
#3.透過註解配置entity,在類別前加上@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
CacheConcurrencyStrategy屬性值常見的有READ_ONLY((對該entity對應的資料表資料只讀取然後快取)和READ-WIRTE(對錶資料可以讀取也可以更新)
4,一定要注意:hibernate二級快取的必須是整個對象,如果查詢的只是物件某些屬性,那麼該物件不會被快取
查詢快取(SessionFactory級快取)
1.在上述二級快取的基礎上繼續配置
2.在hibernate.cfg.xml中新增配置
<property name="hibernate.cache.use_query_cache">true</property>
2.在entity註解上新增@Cacheable
3.在hql語句後面要呼叫setCacheable(true)方法
4.只有當HQL 查詢語句完全相同時,連參數設定都要相同,此時查詢快取才有效
hibernate的三種狀態(transient(瞬時狀態),persistent(持久化狀態)以及detached(離線狀態))
#
以上是有關hibernate快取機制介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

瀏覽器快取影片在哪個資料夾在日常使用網路瀏覽器時,我們經常會觀看各種線上視頻,例如在YouTube上看音樂影片或在Netflix上觀看電影等。而這些影片在載入過程中會被瀏覽器快取下來,以便日後再次播放時能夠快速載入。那麼問題來了,這些快取的影片實際上儲存在哪個資料夾中呢?不同瀏覽器的快取視訊資料夾保存位置是不同的。以下我們將分別介紹幾種常見的瀏覽器以及它們

DNS(DomainNameSystem)是網際網路中用來將網域名稱轉換為對應IP位址的系統。在Linux系統中,DNS快取是一種將網域名稱和IP位址的映射關係儲存在本地的機制,可提高網域解析速度,減輕DNS伺服器的負擔。 DNS快取允許系統在之後存取相同網域名稱時快速檢索IP位址,而不必每次都向DNS伺服器發出查詢請求,從而提高網路效能和效率。本文不念將和大家一起探討如何在Linux上查看和刷新DNS緩存,以及相關的詳細內容和範例程式碼。 DNS快取的重要性在Linux系統中,DNS快取扮演關鍵的角色。它的存在

標題:HTML檔案的快取機制及程式碼範例導語:在撰寫網頁時,我們常會遇到瀏覽器快取的問題。本文將詳細介紹HTML檔案的快取機制,並提供一些具體的程式碼範例,以幫助讀者更好地理解並應用此機制。一、瀏覽器快取原理在瀏覽器中,每當造訪一個網頁時,瀏覽器會先檢查快取中是否有該網頁的副本。如果有,則直接從快取獲取網頁內容,這就是瀏覽器快取的基本原理。瀏覽器快取機制的好處

CPU(中央處理器)、記憶體(隨機存取記憶體)以及快取之間存在著緊密的相互作用,它們合力構成了電腦系統的關鍵組成部分。它們之間的協調配合,確保了電腦的正常運作和高效性能。 CPU作為電腦的大腦,負責執行各種指令和資料處理;記憶體則用於臨時儲存資料和程序,提供了快速的讀寫存取速度;而快取則起到了緩衝作用,加快了資料的存取速度,提高了電腦的CPU是電腦的核心元件,負責執行各種指令、算術運算和邏輯操作。它被稱為電腦的"大腦",承擔著處理資料和執行任務的重要角色。記憶體是電腦中重要的儲存設備,

PHPAPCu(替代php快取)是加速PHP應用程式的opcode快取和資料快取模組。理解其高級功能對於充分利用其潛力至關重要。 1.批次操作:APCu提供批次操作方法,可同時處理大量鍵值對。這對於大規模快取清除或更新非常有用。 //批次取得快取鍵$values=apcu_fetch(["key1","key2","key3"]);//批次清除快取鍵apcu_delete(["key1","key2","key3"]);2 .設定快取過期時間:APCu允許您為快取項目設定過期時間,以便在指定時間後自

SpringBoot是一款廣受歡迎的Java框架,以其簡單易用和快速開發而聞名。然而,隨著應用程式的複雜性增加,效能問題可能會成為瓶頸。為了幫助您打造疾風般快速的springBoot應用,本文將分享一些實用的效能優化秘訣。優化啟動時間應用程式的啟動時間是使用者體驗的關鍵因素之一。 SpringBoot提供了多種最佳化啟動時間的途徑,例如使用快取、減少日誌輸出和最佳化類別路徑掃描。您可以透過在application.properties檔案中設定spring.main.lazy-initialization

瀏覽器快取的影片怎麼匯出來隨著網路的快速發展,影片已經成為人們日常生活中不可或缺的一部分。而在瀏覽網頁時,我們常常會遇到想要儲存或分享的影片內容,但是有時候我們卻無法找到影片檔案的來源,因為它們可能只存在於瀏覽器的快取中。那麼,如何匯出瀏覽器快取中的影片呢?本文將為您介紹幾種常用的方法。首先,我們需要明確一個概念,即瀏覽器快取。瀏覽器快取是瀏覽器為了提高用

在PHP開發中,快取機制透過將經常存取的資料暫時儲存在記憶體或磁碟中來提升效能,從而減少資料庫存取次數。快取類型主要包括記憶體、檔案和資料庫快取。 PHP中可以使用內建函數或第三方函式庫實作緩存,如cache_get()和Memcache。常見的實戰應用程式包括快取資料庫查詢結果以最佳化查詢效能,以及快取頁面輸出以加快渲染速度。快取機制有效改善網站回應速度,提升使用者體驗並降低伺服器負載。
