轉(zhuǎn)載:Hibernate + JPA @Cache ._第1頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、轉(zhuǎn)載:hibernate + jpa cache .一級緩存 hibernate 的一級緩存是由 session 提供的,因此它只存在于 session 的生命周期中,當(dāng)程序調(diào)用 save(),up(),saveorupdate() 等辦法 及調(diào)用查詢接口 list,filter,iterate 時(shí),如 session 緩存中還不存在相應(yīng)的對象, hibernate 會(huì)把該對象加入到一級緩存中, 當(dāng) session 關(guān)閉的時(shí)候該 session 所管理的一級緩存也會(huì)立刻被清除 hibernate 的一級緩存是 session 所內(nèi)置的,不能被卸載,也不能舉行任何配置 二級緩存配置 1 、首先要

2、打開二級緩存,在 hibernate.cfg.xml 中添加如下配置: property name=hibernate.cache.use_second_level_cache ue /property 2 、 hibernate 的二級緩存用法第三方的緩存工具來實(shí)現(xiàn),所以我們需要指定 hibernate 用法哪個(gè) 緩存工具。如下配置指定 hibernate 用法 ehcache 緩存工具。 property name=ver_class org.hibernate.cache.ehcacheprovider /property 3 、 hibernate

3、 在默認(rèn)狀況下并不會(huì)對全部實(shí)體對象舉行緩存,所以,我們需要指定緩存哪些對象, 在實(shí)體對象的映射文件中(相應(yīng)的 class 標(biāo)簽內(nèi)部),添加如下配置: cache usage=read-only/ usage=read-only 是“只讀”緩存策略。 注重,這個(gè) cache 標(biāo)簽只能放在 class 標(biāo)簽的內(nèi)部,而且必需處在 id 標(biāo)簽的前面! 這個(gè) cache 標(biāo)簽放在哪些 class 標(biāo)簽下面,就解釋會(huì)多這些類的對象舉行緩存 4 、對于第 3 步,有一個(gè)可選的計(jì)劃是在 hibernate.cfg.xml 文件中指定哪些類的對象需要緩存, 而不需要用法 cache 標(biāo)簽來指定。如: 在 hib

4、ernate.cfg.xml 中添加如下配置: class-cache usage=read-only / 注重,這個(gè) class-cache 標(biāo)簽必需放在 map 標(biāo)簽的后面! hibernate緩存配置 _ hibernate的緩存分為: 一級緩存:在session級別的,在session關(guān)閉的時(shí)候,一級緩存就失效了。 二級緩存:在sessionfactory級別的,它可以用法不同的緩存實(shí)現(xiàn),如ehcache 、jbosscache、oscache等。 緩存的注釋寫法如下,加在entity的java類上: cache(usage = cachecourrencystrategy.nonst

5、rict_read_write) 緩存的方式有四種,分離為: cacheconcurrencystrategy.none cacheconcurrencystrategy.read_only,只讀模式,在此模式下,假如對數(shù)據(jù)舉行更新操作,會(huì)有異樣; cacheconcurrencystrategy.read_write,讀寫模式在更新緩存的時(shí)候會(huì)把緩存里面的數(shù)據(jù)換成一個(gè)鎖,其它事務(wù)假如去取相應(yīng)的緩存數(shù)據(jù),發(fā)覺被鎖了,挺直就去數(shù)據(jù)庫查詢; cacheconcurrencystrategy.nonstrict_read_write,不嚴(yán)格的讀寫模式則不會(huì)的緩存數(shù)據(jù)加鎖; cacheconcurre

6、ncystrategy.transactional,事務(wù)模式指緩存支持事務(wù),當(dāng)事務(wù)回滾時(shí),緩存也能回滾,只支持jta環(huán)境。 另外還有如下注重事項(xiàng): 1、查詢緩存需要在query的相應(yīng)辦法執(zhí)行前加上這么一句: query.cacheable(true); 在用法hibernate時(shí),獲得的query有setcacheable 辦法,可以設(shè)置用法緩存,但當(dāng)用法jpa時(shí),javax.persistence.query并沒有setcacheable辦法,此時(shí)假如jpa的實(shí)現(xiàn)是hibernate時(shí),可以將其舉行如下轉(zhuǎn)化,再調(diào)用setcacheable辦法(假如jpa的實(shí)現(xiàn)是其它ormap框架,就不知道怎

7、么做了)。 if (query instanceof org.hibernate.ejb.queryimpl) (org.hibernate.ejb.queryimpl) query).gethibernatequery().setcacheable(true); 2、還有就是查詢緩存的查詢執(zhí)行后,會(huì)將查詢結(jié)果放入二級緩存中,但是放入的形式是以id為key,實(shí)例作為一個(gè)value。 3、hibernate的配置文件中需加入如下信息: property name=vider_class value=org.hibernate.cache.ehcachepro

8、vider / property name=hibernate.cache.use_second_level_cache value=true / property name=hibernate.cache.use_query_cache value=true / 緩存映射(cache mappings) 類或者集合映射的“ cache 元素”可以有下列形式: cache usage=transactional|read-|nonstrict-read-write|read-only (1) / usage 解釋了緩存的策略: transactional 、 read-write 、 nons

9、trict-read-write 或 read-only 。 另外(首選?), 你可以在hibernate.cfg.xml中指定 class-cache 和 lection-cache 元素。 這里的usage 屬性指明白緩存并 發(fā)策略(cache concurrency strategy) 。 只讀 緩存(read only) 假如你的應(yīng)用程序只需讀取一個(gè)持久化類的實(shí)例,而無需對其修改, 那么就可以對其舉行只讀 緩存。這是最容易,也是有用性最好的辦法。甚至在中,它也能完善地運(yùn)作。 class name=eg.immutable mutable=fae cache usage=read-onl

10、y/ . /class 讀/寫緩存( read/write) 假如應(yīng)用程序需要更新數(shù)據(jù),那么用法讀/寫緩存 比較合適。 假如應(yīng)用程序要求“序列化事務(wù)”的隔離級別(serializable transaction isolation level),那么就決不能用法這種緩存策略。 假如在jta環(huán)境中用法緩存,你必需指定hibernate.transaction.manager_up_class 屬 性的值, 通過它,hibernate才干知道該應(yīng)用程序中jta的transactionmanager 的 詳細(xì)策略。 在其它環(huán)境中,你必需保證在session.close() 、或session.disconnect()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論