資源描述:
《hibernate緩存機(jī)制》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、Hibernate緩存管理1.Hibernate緩存分類1、一級(jí)緩存:Session緩存,它是屬于事物范圍的緩存,這一級(jí)別的緩存由Hibernate管理的,一般情況下無需干預(yù)。2、二級(jí)緩存:SessionFactory級(jí)別的緩存,它是屬于進(jìn)程范圍或群集范圍的緩存,這一級(jí)別的緩存可以進(jìn)行配置和更改,并且可以動(dòng)態(tài)加載和卸載。2.Hibernate緩存管理1、一級(jí)緩存的管理:當(dāng)應(yīng)用程序調(diào)用Session的save()、update()、savaeOrUpdate()、get()或load(),以及調(diào)用查詢接
2、口的list()、iterate()或filter()方法時(shí),如果在Session緩存中還不存在相應(yīng)的對(duì)象,Hibernate就會(huì)把該對(duì)象加入到第一級(jí)緩存中。當(dāng)清理緩存時(shí),Hibernate會(huì)根據(jù)緩存中對(duì)象的狀態(tài)變化來同步更新數(shù)據(jù)庫。Session為應(yīng)用程序提供了兩個(gè)管理緩存的方法:evict(Objectobj):從緩存中清除參數(shù)指定的持久化對(duì)象。clear():清空緩存中所有持久化對(duì)象。2、二級(jí)緩存管理:1)條件查詢的時(shí)候,總是發(fā)出一條select*fromtable_namewhere….(選擇
3、所有字段)這樣的SQL語句查詢數(shù)據(jù)庫,一次獲得所有的數(shù)據(jù)對(duì)象。2)把獲得的所有數(shù)據(jù)對(duì)象根據(jù)ID放入到第二級(jí)緩存中。3)當(dāng)Hibernate根據(jù)ID訪問數(shù)據(jù)對(duì)象的時(shí)候,首先從Session一級(jí)緩存中查;查不到,如果配置了二級(jí)緩存,那么從二級(jí)緩存中查;查不到,再查詢數(shù)據(jù)庫,把結(jié)果按照ID放入到緩存。4)刪除、更新、增加數(shù)據(jù)的時(shí)候,同時(shí)更新緩存。3.常用的緩存插件1、EhCache:可作為進(jìn)程范圍的緩存,存放數(shù)據(jù)的物理介質(zhì)可以是內(nèi)存或硬盤,對(duì)Hibernate的查詢緩存提供了支持。2、OSCache:可作為
4、進(jìn)程范圍的緩存,存放數(shù)據(jù)的物理介質(zhì)可以是內(nèi)存或硬盤,提供了豐富的緩存數(shù)據(jù)過期策略,對(duì)Hibernate的查詢緩存提供了支持。3、SwarmCache:可作為群集范圍內(nèi)的緩存,但不支持Hibernate的查詢緩存。4、JBossCache:可作為群集范圍內(nèi)的緩存,支持事務(wù)型并發(fā)訪問策略,對(duì)Hibernate的查詢緩存提供了支持。4.使用EhCache配置二級(jí)緩存的步驟1、把ehcache-1.2.3.jar加入到當(dāng)前應(yīng)用的classpath中。2、在hibernate.cfg.xml文件中加入EhCac
5、he緩存插件的提供類。???org.hibernate.cache.EhCacheProvider3、???挎貝ehcache.xml文件到類路徑(項(xiàng)目工程的src目錄下),這個(gè)文件在Hibernate安裝目錄的etc下4、Hibernate允許在類和集合的粒度上設(shè)置第二級(jí)緩存。在映射文件中,和元素都有一個(gè)子元素,這個(gè)子元素
6、用來配置二級(jí)緩存。5、修改要配置緩存的那個(gè)持久化類的對(duì)象關(guān)系映射文件:Category.hbm.xml???7、="org.qiujy.domain.cachedemo.Category"table="categories">????????????????????????????????????
8、????????????????????????????????????????????????