成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全面講解Hibernate二級緩存

開發(fā) 后端
這里Hibernate二級緩存策略,是針對于ID查詢的緩存策略,對于條件查詢則毫無作用。為此,Hibernate提供了針對條件查詢的Query Cache。

在向大家詳細(xì)介紹Hibernate二級緩存之前,首先讓大家了解下一級緩存,然后全面介紹Hibernate二級緩存。

Hibernate中提供了兩級Cache,第一級別的緩存是Session級別的緩存,它是屬于事務(wù)范圍的緩存。這一級別的緩存由hibernate管理的,一般情況下無需進(jìn)行干預(yù);第二級別的緩存是SessionFactory級別的緩存,它是屬于進(jìn)程范圍或群集范圍的緩存。這一級別的緩存可以進(jìn)行配置和更改,并且可以動(dòng)態(tài)加載和卸載。 Hibernate還為查詢結(jié)果提供了一個(gè)查詢緩存,它依賴于第二級緩存。

一. 一級緩存和二級緩存的比較:

第一級緩存 第二級緩存 存放數(shù)據(jù)的形式相互關(guān)聯(lián)的持久化對象 對象的散裝數(shù)據(jù) 緩存的范圍事務(wù)范圍,每個(gè)事務(wù)都有單獨(dú)的第一級緩存進(jìn)程范圍或集群范圍,緩存被同一個(gè)進(jìn)程或集群范圍內(nèi)的所有事務(wù)共享并發(fā)訪問策略由于每個(gè)事務(wù)都擁有單獨(dú)的第一級緩存,不會(huì)出現(xiàn)并發(fā)問題,無需提供并發(fā)訪問策略由于多個(gè)事務(wù)會(huì)同時(shí)訪問第二級緩存中相同數(shù)據(jù),因此必須提供適當(dāng)?shù)牟l(fā)訪問策略,來保證特定的事務(wù)隔離級別數(shù)據(jù)過期策略沒有提供數(shù)據(jù)過期策略。處于一級緩存中的對象永遠(yuǎn)不會(huì)過期,除非應(yīng)用程序顯式清空緩存或者清除特定的對象必須提供數(shù)據(jù)過期策略,如基于內(nèi)存的緩存中的對象的最大數(shù)目,允許對象處于緩存中的最長時(shí)間,以及允許對象處于緩存中的最長空閑時(shí)間物理存儲(chǔ)介質(zhì)內(nèi)存內(nèi)存和硬盤。對象的散裝數(shù)據(jù)首先存放在基于內(nèi)存的緩存中,當(dāng)內(nèi)存中對象的數(shù)目達(dá)到數(shù)據(jù)過期策略中指定上限時(shí),就會(huì)把其余的對象寫入基于硬盤的緩存中。緩存的軟件實(shí)現(xiàn)在Hibernate的Session的實(shí)現(xiàn)中包含了緩存的實(shí)現(xiàn)由第三方提供,Hibernate僅提供了緩存適配器(CacheProvider)。用于把特定的緩存插件集成到Hibernate中。啟用緩存的方式只要應(yīng)用程序通過Session接口來執(zhí)行保存、更新、刪除、加載和查詢數(shù)據(jù)庫數(shù)據(jù)的操作,Hibernate就會(huì)啟用第一級緩存,把數(shù)據(jù)庫中的數(shù)據(jù)以對象的形式拷貝到緩存中,對于批量更新和批量刪除操作,如果不希望啟用第一級緩存,可以繞過Hibernate API,直接通過JDBC API來執(zhí)行指操作。用戶可以在單個(gè)類或類的單個(gè)集合的粒度上配置第二級緩存。如果類的實(shí)例被經(jīng)常讀但很少被修改,就可以考慮使用第二級緩存。只有為某個(gè)類或集合配置了第二級緩存,Hibernate在運(yùn)行時(shí)才會(huì)把它的實(shí)例加入到第二級緩存中。用戶管理緩存的方式第一級緩存的物理介質(zhì)為內(nèi)存,由于內(nèi)存容量有限,必須通過恰當(dāng)?shù)臋z索策略和檢索方式來限制加載對象的數(shù)目。Session的 evit()方法可以顯式清空緩存中特定對象,但這種方法不值得推薦。第二級緩存的物理介質(zhì)可以是內(nèi)存和硬盤,因此第二級緩存可以存放大量的數(shù)據(jù),數(shù)據(jù)過期策略的maxElementsInMemory屬性值可以控制內(nèi)存中的對象數(shù)目。管理第二級緩存主要包括兩個(gè)方面:選擇需要使用第二級緩存的持久類,設(shè)置合適的并發(fā)訪問策略:選擇緩存適配器,設(shè)置合適的數(shù)據(jù)過期策略。

二. 一級緩存的管理:

當(dāng)應(yīng)用程序調(diào)用Session的save()、update()、savaeOrUpdate()、get()或load(),以及調(diào)用查詢接口的 list()、iterate()或filter()方法時(shí),如果在Session緩存中還不存在相應(yīng)的對象,Hibernate就會(huì)把該對象加入到第一級緩存中。當(dāng)清理緩存時(shí),Hibernate會(huì)根據(jù)緩存中對象的狀態(tài)變化來同步更新數(shù)據(jù)庫。 Session為應(yīng)用程序提供了兩個(gè)管理緩存的方法: evict(Object obj):從緩存中清除參數(shù)指定的持久化對象。 clear():清空緩存中所有持久化對象。

三. Hibernate二級緩存的管理:

1. Hibernate二級緩存策略的一般過程如下:
1) 條件查詢的時(shí)候,總是發(fā)出一條select * from table_name where …. (選擇所有字段)這樣的SQL語句查詢數(shù)據(jù)庫,一次獲得所有的數(shù)據(jù)對象。
2) 把獲得的所有數(shù)據(jù)對象根據(jù)ID放入到第二級緩存中。
3) 當(dāng)Hibernate根據(jù)ID訪問數(shù)據(jù)對象的時(shí)候,首先從Session一級緩存中查;查不到,如果配置了二級緩存,那么從二級緩存中查;查不到,再查詢數(shù)據(jù)庫,把結(jié)果按照ID放入到緩存。
4) 刪除、更新、增加數(shù)據(jù)的時(shí)候,同時(shí)更新緩存。
Hibernate二級緩存策略,是針對于ID查詢的緩存策略,對于條件查詢則毫無作用。為此,Hibernate提供了針對條件查詢的Query Cache。

2. 什么樣的數(shù)據(jù)適合存放到第二級緩存中?
1) 很少被修改的數(shù)據(jù)
2) 不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)
3) 不會(huì)被并發(fā)訪問的數(shù)據(jù)
4) 參考數(shù)據(jù),指的是供應(yīng)用參考的常量數(shù)據(jù),它的實(shí)例數(shù)目有限,它的實(shí)例會(huì)被許多其他類的實(shí)例引用,實(shí)例極少或者從來不會(huì)被修改。

3. 不適合存放到第二級緩存的數(shù)據(jù)?
1) 經(jīng)常被修改的數(shù)據(jù)
2) 財(cái)務(wù)數(shù)據(jù),絕對不允許出現(xiàn)并發(fā)
3) 與其他應(yīng)用共享的數(shù)據(jù)。

4. 常用的緩存插件 Hibernater二級緩存是一個(gè)插件,下面是幾種常用的緩存插件:
◆EhCache:可作為進(jìn)程范圍的緩存,存放數(shù)據(jù)的物理介質(zhì)可以是內(nèi)存或硬盤,對Hibernate的查詢緩存提供了支持。
◆OSCache:可作為進(jìn)程范圍的緩存,存放數(shù)據(jù)的物理介質(zhì)可以是內(nèi)存或硬盤,提供了豐富的緩存數(shù)據(jù)過期策略,對Hibernate的查詢緩存提供了支持。
◆SwarmCache:可作為群集范圍內(nèi)的緩存,但不支持Hibernate的查詢緩存。
◆JBossCache:可作為群集范圍內(nèi)的緩存,支持事務(wù)型并發(fā)訪問策略,對Hibernate的查詢緩存提供了支持。

5. 配置Hibernate二級緩存的主要步驟:
1) 選擇需要使用二級緩存的持久化類,設(shè)置它的命名緩存的并發(fā)訪問策略。這是最值得認(rèn)真考慮的步驟。
2) 選擇合適的緩存插件,然后編輯該插件的配置文件。

【編輯推薦】

  1. Hibernate連接配置方法剖析
  2. Hibernate Session實(shí)例剖析
  3. 淺析Hibernate Callback接口
  4. Hibernate Session緩存概述
  5. Hibernate修改addMate方法
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-06-18 15:24:35

Hibernate二級

2009-09-21 14:59:31

Hibernate二級

2009-09-21 14:39:40

Hibernate二級

2009-09-21 13:31:10

Hibernate 3

2009-09-23 09:37:07

Hibernate緩存

2009-06-10 15:00:58

Hibernate二級配置

2013-09-08 23:30:56

EF Code Fir架構(gòu)設(shè)計(jì)MVC架構(gòu)設(shè)計(jì)

2009-08-13 18:12:12

Hibernate 3

2025-04-29 07:06:20

2009-09-21 17:17:11

Hibernate二級

2024-12-03 14:38:07

CaffeineRedis二級緩存

2022-12-02 12:01:30

Spring緩存生命周期

2022-03-01 18:03:06

Spring緩存循環(huán)依賴

2009-09-23 15:50:21

Hibernate u

2009-09-24 10:50:31

Hibernate主鍵

2022-01-12 07:48:19

緩存Spring 循環(huán)

2015-06-11 10:12:26

Android圖片加載緩存

2009-09-29 10:12:03

Hibernate A

2025-06-26 01:55:00

2012-02-08 11:01:53

HibernateJava
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 自拍偷拍第一页 | 国产成人精品网站 | 91精品久久久久 | 日韩中文字幕一区二区 | 亚洲欧美激情精品一区二区 | 日韩精品一区在线 | 精品国产31久久久久久 | 欧美日韩亚洲国产综合 | 国产日韩欧美在线观看 | 91在线观看视频 | 亚洲精品一二三 | 精品国产一区二区三区性色av | 丝袜美腿一区二区三区动态图 | 天天操天天干天天爽 | 精品免费在线 | 在线国产一区 | 国产1区2区在线观看 | 中文字幕国产 | 91中文在线观看 | 成人亚洲视频 | 久久久一区二区 | 97伦理电影 | 日韩1区2区 | 午夜精品福利视频 | 日韩精品免费视频 | 国产精品国产三级国产aⅴ中文 | 国产精品91视频 | 欧美a在线看 | 免费精品久久久久久中文字幕 | 成人做爰69片免费观看 | 婷婷久久综合 | 欧美xxxx黑人又粗又长 | 国产aⅴ爽av久久久久久久 | 久久久青草婷婷精品综合日韩 | 日日草夜夜草 | 亚洲网址在线观看 | 日韩有码一区 | 黄色片免费看视频 | 精品熟人一区二区三区四区 | 欧美日韩国产中文字幕 | 欧美国产日韩一区二区三区 |