更新時間:2022-04-12 09:19:30 來源:動力節(jié)點(diǎn) 瀏覽810次
動力節(jié)點(diǎn)小編來告訴大家,Hibernate 二級緩存是 Hibernate 對象關(guān)系映射 (ORM) 庫中可用的數(shù)據(jù)緩存組件之一。Hibernate 是一種流行的 Java 語言 ORM 庫,它允許您將 Java 對象數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 中。
由于 Java 對象不會自然地與 RDBMS 的表/行/列對齊(這種現(xiàn)象稱為“阻抗不匹配”),Hibernate 充當(dāng)翻譯層。使用 Hibernate,您可以通過提供從關(guān)系數(shù)據(jù)庫表、行、列和外鍵到帶注釋的 Java 類的映射機(jī)制,輕松快速地訪問關(guān)系數(shù)據(jù)。Hibernate 使用易于使用的語法生成 SQL 查詢,以基于 Java 面向?qū)ο蟮挠蚰P筒樵償?shù)據(jù)。
二級緩存是通過插入第三方緩存技術(shù)來實(shí)現(xiàn)的,擴(kuò)展Hibernate內(nèi)置的緩存能力。它用于克服一級緩存的限制,如下所述。
緩存是Hibernate 框架的優(yōu)勢之一,它可以在多個級別上使用。
一級緩存是 Hibernate 檢查緩存數(shù)據(jù)的第一個地方。默認(rèn)情況下,它是內(nèi)置的并處于活動狀態(tài),以減少直接對數(shù)據(jù)庫的 SQL 查詢數(shù)量。如果請求的查詢結(jié)果不在一級緩存中,則針對底層數(shù)據(jù)庫運(yùn)行查詢(即,如果沒有啟用二級緩存)。此緩存僅在會話級別起作用,這意味著每個會話對象都獨(dú)立緩存數(shù)據(jù),因此不會在會話之間共享緩存數(shù)據(jù),并且在會話關(guān)閉時會刪除緩存數(shù)據(jù)。這使得緩存僅對同一會話中的重復(fù)查詢有用。對于跨多個會話的重復(fù)查詢,這就是二級緩存發(fā)揮作用的地方。
使用 Hibernate 二級緩存,您可以插入緩存技術(shù)來補(bǔ)充一級緩存。如果請求的查詢結(jié)果不在一級緩存中,則檢查二級緩存。二級緩存跨會話共享緩存數(shù)據(jù),因此所有會話/用戶都可以從緩存數(shù)據(jù)中受益,即使對于由另一個會話插入的數(shù)據(jù),即使將數(shù)據(jù)插入二級緩存的會話關(guān)閉。
二級緩存提高了使用同一會話工廠創(chuàng)建的所有會話的持久性方面的應(yīng)用程序性能。使用二級緩存,即使請求是從多個會話執(zhí)行的,緩存也可以為對象的請求提供服務(wù),其延遲比請求發(fā)送到數(shù)據(jù)庫時低得多。考慮到 ORM 查詢可能很復(fù)雜,因此相對較慢,系統(tǒng)可以極大地受益于二級緩存,以減少對底層數(shù)據(jù)庫的相同復(fù)雜/慢查詢的重復(fù)。
這對于在對數(shù)據(jù)庫進(jìn)行 SQL 查詢方面在用戶之間具有高度共性的大容量 Web 應(yīng)用程序特別有用。并且通過高度可擴(kuò)展的緩存,您可以緩存更多的數(shù)據(jù)并實(shí)現(xiàn)更多的性能加速。
任何支持與 Hibernate 開箱即用集成的技術(shù)都可以插入以充當(dāng)二級緩存。內(nèi)存數(shù)據(jù)網(wǎng)格通常用作 Hibernate 二級緩存。例如,Hazelcast IMDG 內(nèi)置了與 Hibernate 的集成,可以輕松插入二級緩存。借助其分布式架構(gòu),您可以向集群添加更多節(jié)點(diǎn),以盡可能多地增加緩存,以處理更重的工作負(fù)載。
通過以上介紹,相信大家對Hibernate二級緩存已經(jīng)有了一定的認(rèn)識,大家如果對此比較感興趣,想了解更多相關(guān)知識,不妨來關(guān)注一下動力節(jié)點(diǎn)的Hibernate視頻教程,里面的課程內(nèi)容細(xì)致全面,由淺到深,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助。
初級 202925
初級 203221
初級 202629
初級 203743