佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Spring 整合 Hibernate 時(shí)啟用二級緩存實(shí)例詳解

Spring 整合 Hibernate 時(shí)啟用二級緩存實(shí)例詳解

熱門標(biāo)簽:電子圍欄 科大訊飛語音識別系統(tǒng) 團(tuán)購網(wǎng)站 Mysql連接數(shù)設(shè)置 服務(wù)器配置 Linux服務(wù)器 阿里云 銀行業(yè)務(wù)

Spring 整合 Hibernate 時(shí)啟用二級緩存實(shí)例詳解

寫在前面:

  1. 本例使用 Hibernate3 + Spring3;
  2. 本例的查詢使用了 HibernateTemplate;

1. 導(dǎo)入 ehcache-x.x.x.jar 包;

2. 在 applicationContext.xml 文件中找到 sessionFactory 相應(yīng)的配置信息并在設(shè)置 hibernateProperties 中添加如下代碼:

!-- 配置使用查詢緩存 --> 
prop key="hibernate.cache.use_query_cache">true/prop> 
!-- 配置啟用二級緩存 --> 
prop key="hibernate.cache.use_second_level_cache">true/prop> 
!-- 配置二級緩存的提供商 --> 
prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider/prop> 



3. 由于查詢使用了 hibernateTemplate,所以還要在 hibernateTemplate 中做相應(yīng)配置,找到 hibernateTemplate 的配置項(xiàng),添加如下代碼:

!-- 使用查詢緩存 --> 
property name="cacheQueries"> 
  value>true/value> 
/property> 


4. 在要緩存的實(shí)體類中加入如下注解:

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 

注:

  usage 可以有以下幾個取值:

  • CacheConcurrencyStrategy.NONE:不使用緩存,默認(rèn);
  • CacheConcurrencyStrategy.READ_ONLY:只讀模式,若對緩存的數(shù)據(jù)進(jìn)行修改操作會拋出異常;
  • CacheConcurrencyStrategy.NONSTRICT_READ_WRITE:不嚴(yán)格的讀寫模式,不會對緩存的數(shù)據(jù)加鎖;
  • CacheConcurrencyStrategy.READ_WRITE:讀寫模式,在更新緩存的時(shí)候會把緩存里面的數(shù)據(jù)換成一個鎖,其它事務(wù)如果去取相應(yīng)的緩存數(shù)據(jù),發(fā)現(xiàn)被鎖了,直接就去數(shù)據(jù)庫查詢;
  • CacheConcurrencyStrategy.TRANSACTIONAL:事務(wù)模式,支持事務(wù),當(dāng)事務(wù)發(fā)生回滾時(shí),緩存中的數(shù)據(jù)也回滾,只支持 JPA 。

5. 配置 ehcache.xml 文件:

ehcache> 
  !-- 指定一個文件目錄,當(dāng)EHCache把數(shù)據(jù)寫到硬盤上時(shí),將把數(shù)據(jù)寫到這個目錄下 --> 
  diskStore path="java.io.tmpdir"/> 
  !--  
    name 設(shè)置緩存的名字,他的取值為類的完整名字或者類的集合的名字; 
    maxElementsInMemory 設(shè)置基于內(nèi)存的緩存可存放的對象的最大數(shù)目 
    eternal 如果為true,表示對象永遠(yuǎn)不會過期,此時(shí)會忽略timeToIdleSeconds和timeToLiveSeconds,默認(rèn)為false; 
    timeToIdleSeconds 設(shè)定允許對象處于空閑狀態(tài)的最長時(shí)間,以秒為單位; 
    timeToLiveSeconds 設(shè)定對象允許存在于緩存中的最長時(shí)間,以秒為單位; 
    overflowToDisk 如果為true,表示當(dāng)基于內(nèi)存的緩存中的對象數(shù)目達(dá)到maxElementsInMemory界限,會把溢出的對象寫到基于硬盤的緩存中; 
   --> 
  !-- 設(shè)置緩存的默認(rèn)數(shù)據(jù)過期策略 --> 
  defaultCache 
    maxElementsInMemory="1000" 
    eternal="false" 
    timeToIdleSeconds="1200" 
    timeToLiveSeconds="1200" 
    overflowToDisk="false" 
  /> 
  !-- 設(shè)定具體的第二級緩存的數(shù)據(jù)過期策略 --> 
  cache name="com.shawearn.model.User" 
    maxElementsInMemory="1000" 
    eternal="false" 
    timeToIdleSeconds="3000" 
    timeToLiveSeconds="3000" 
    overflowToDisk="false" /> 
/ehcache> 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • SSH整合中 hibernate托管給Spring得到SessionFactory
  • 詳解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)
  • SSH框架網(wǎng)上商城項(xiàng)目第1戰(zhàn)之整合Struts2、Hibernate4.3和Spring4.2
  • Spring4整合Hibernate5詳細(xì)步驟
  • spring+hibernate 兩種整合方式配置文件的方法
  • Java框架篇:Spring+SpringMVC+hibernate整合開發(fā)
  • Spring+Hibernate+Struts(SSH)框架整合實(shí)戰(zhàn)
  • Spring與Hibernate整合事務(wù)管理的理解
  • Spring MVC+FastJson+hibernate-validator整合的完整實(shí)例教程
  • struts+spring+hibernate三個框架的整合
  • Spring和Hibernate的整合操作示例

標(biāo)簽:棗莊 廣元 蚌埠 衢州 萍鄉(xiāng) 大理 江蘇 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Spring 整合 Hibernate 時(shí)啟用二級緩存實(shí)例詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    商南县| 淮南市| 罗田县| 藁城市| 黄梅县| 桃江县| 阳谷县| 贵德县| 阿尔山市| 璧山县| 仙居县| 鱼台县| 定结县| 鄂托克前旗| 郎溪县| 鸡东县| 昌宁县| 西乌珠穆沁旗| 长兴县| 汉阴县| 张家港市| 呼玛县| 肥西县| 册亨县| 武清区| 麻城市| 南部县| 常德市| 定结县| 谢通门县| 棋牌| 军事| 探索| 日照市| 鄂尔多斯市| 海兴县| 武冈市| 红桥区| 建宁县| 宁南县| 井研县|