更新時(shí)間:2022-04-12 09:19:30 來源:動(dòng)力節(jié)點(diǎn) 瀏覽958次
動(dòng)力節(jié)點(diǎn)小編來告訴大家,Hibernate 二級(jí)緩存是 Hibernate 對(duì)象關(guān)系映射 (ORM) 庫(kù)中可用的數(shù)據(jù)緩存組件之一。Hibernate 是一種流行的 Java 語言 ORM 庫(kù),它允許您將 Java 對(duì)象數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (RDBMS) 中。
由于 Java 對(duì)象不會(huì)自然地與 RDBMS 的表/行/列對(duì)齊(這種現(xiàn)象稱為“阻抗不匹配”),Hibernate 充當(dāng)翻譯層。使用 Hibernate,您可以通過提供從關(guān)系數(shù)據(jù)庫(kù)表、行、列和外鍵到帶注釋的 Java 類的映射機(jī)制,輕松快速地訪問關(guān)系數(shù)據(jù)。Hibernate 使用易于使用的語法生成 SQL 查詢,以基于 Java 面向?qū)ο蟮挠蚰P筒樵償?shù)據(jù)。

二級(jí)緩存是通過插入第三方緩存技術(shù)來實(shí)現(xiàn)的,擴(kuò)展Hibernate內(nèi)置的緩存能力。它用于克服一級(jí)緩存的限制,如下所述。
緩存是Hibernate 框架的優(yōu)勢(shì)之一,它可以在多個(gè)級(jí)別上使用。
一級(jí)緩存是 Hibernate 檢查緩存數(shù)據(jù)的第一個(gè)地方。默認(rèn)情況下,它是內(nèi)置的并處于活動(dòng)狀態(tài),以減少直接對(duì)數(shù)據(jù)庫(kù)的 SQL 查詢數(shù)量。如果請(qǐng)求的查詢結(jié)果不在一級(jí)緩存中,則針對(duì)底層數(shù)據(jù)庫(kù)運(yùn)行查詢(即,如果沒有啟用二級(jí)緩存)。此緩存僅在會(huì)話級(jí)別起作用,這意味著每個(gè)會(huì)話對(duì)象都獨(dú)立緩存數(shù)據(jù),因此不會(huì)在會(huì)話之間共享緩存數(shù)據(jù),并且在會(huì)話關(guān)閉時(shí)會(huì)刪除緩存數(shù)據(jù)。這使得緩存僅對(duì)同一會(huì)話中的重復(fù)查詢有用。對(duì)于跨多個(gè)會(huì)話的重復(fù)查詢,這就是二級(jí)緩存發(fā)揮作用的地方。
使用 Hibernate 二級(jí)緩存,您可以插入緩存技術(shù)來補(bǔ)充一級(jí)緩存。如果請(qǐng)求的查詢結(jié)果不在一級(jí)緩存中,則檢查二級(jí)緩存。二級(jí)緩存跨會(huì)話共享緩存數(shù)據(jù),因此所有會(huì)話/用戶都可以從緩存數(shù)據(jù)中受益,即使對(duì)于由另一個(gè)會(huì)話插入的數(shù)據(jù),即使將數(shù)據(jù)插入二級(jí)緩存的會(huì)話關(guān)閉。
二級(jí)緩存提高了使用同一會(huì)話工廠創(chuàng)建的所有會(huì)話的持久性方面的應(yīng)用程序性能。使用二級(jí)緩存,即使請(qǐng)求是從多個(gè)會(huì)話執(zhí)行的,緩存也可以為對(duì)象的請(qǐng)求提供服務(wù),其延遲比請(qǐng)求發(fā)送到數(shù)據(jù)庫(kù)時(shí)低得多??紤]到 ORM 查詢可能很復(fù)雜,因此相對(duì)較慢,系統(tǒng)可以極大地受益于二級(jí)緩存,以減少對(duì)底層數(shù)據(jù)庫(kù)的相同復(fù)雜/慢查詢的重復(fù)。
這對(duì)于在對(duì)數(shù)據(jù)庫(kù)進(jìn)行 SQL 查詢方面在用戶之間具有高度共性的大容量 Web 應(yīng)用程序特別有用。并且通過高度可擴(kuò)展的緩存,您可以緩存更多的數(shù)據(jù)并實(shí)現(xiàn)更多的性能加速。
任何支持與 Hibernate 開箱即用集成的技術(shù)都可以插入以充當(dāng)二級(jí)緩存。內(nèi)存數(shù)據(jù)網(wǎng)格通常用作 Hibernate 二級(jí)緩存。例如,Hazelcast IMDG 內(nèi)置了與 Hibernate 的集成,可以輕松插入二級(jí)緩存。借助其分布式架構(gòu),您可以向集群添加更多節(jié)點(diǎn),以盡可能多地增加緩存,以處理更重的工作負(fù)載。
通過以上介紹,相信大家對(duì)Hibernate二級(jí)緩存已經(jīng)有了一定的認(rèn)識(shí),大家如果對(duì)此比較感興趣,想了解更多相關(guān)知識(shí),不妨來關(guān)注一下動(dòng)力節(jié)點(diǎn)的Hibernate視頻教程,里面的課程內(nèi)容細(xì)致全面,由淺到深,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)