Spring 整合 Hibernate 時(shí)啟用二級(jí)緩存實(shí)例詳解
Spring 整合 Hibernate 時(shí)啟用二級(jí)緩存實(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> <!-- 配置啟用二級(jí)緩存 --> <prop key="hibernate.cache.use_second_level_cache">true</prop> <!-- 配置二級(jí)緩存的提供商 --> <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 可以有以下幾個(gè)取值:
- CacheConcurrencyStrategy.NONE:不使用緩存,默認(rèn);
- CacheConcurrencyStrategy.READ_ONLY:只讀模式,若對(duì)緩存的數(shù)據(jù)進(jìn)行修改操作會(huì)拋出異常;
- CacheConcurrencyStrategy.NONSTRICT_READ_WRITE:不嚴(yán)格的讀寫模式,不會(huì)對(duì)緩存的數(shù)據(jù)加鎖;
- CacheConcurrencyStrategy.READ_WRITE:讀寫模式,在更新緩存的時(shí)候會(huì)把緩存里面的數(shù)據(jù)換成一個(gè)鎖,其它事務(wù)如果去取相應(yīng)的緩存數(shù)據(jù),發(fā)現(xiàn)被鎖了,直接就去數(shù)據(jù)庫(kù)查詢;
- CacheConcurrencyStrategy.TRANSACTIONAL:事務(wù)模式,支持事務(wù),當(dāng)事務(wù)發(fā)生回滾時(shí),緩存中的數(shù)據(jù)也回滾,只支持 JPA 。
5. 配置 ehcache.xml 文件:
<ehcache> <!-- 指定一個(gè)文件目錄,當(dāng)EHCache把數(shù)據(jù)寫到硬盤上時(shí),將把數(shù)據(jù)寫到這個(gè)目錄下 --> <diskStore path="java.io.tmpdir"/> <!-- name 設(shè)置緩存的名字,他的取值為類的完整名字或者類的集合的名字; maxElementsInMemory 設(shè)置基于內(nèi)存的緩存可存放的對(duì)象的最大數(shù)目 eternal 如果為true,表示對(duì)象永遠(yuǎn)不會(huì)過期,此時(shí)會(huì)忽略timeToIdleSeconds和timeToLiveSeconds,默認(rèn)為false; timeToIdleSeconds 設(shè)定允許對(duì)象處于空閑狀態(tài)的最長(zhǎng)時(shí)間,以秒為單位; timeToLiveSeconds 設(shè)定對(duì)象允許存在于緩存中的最長(zhǎng)時(shí)間,以秒為單位; overflowToDisk 如果為true,表示當(dāng)基于內(nèi)存的緩存中的對(duì)象數(shù)目達(dá)到maxElementsInMemory界限,會(huì)把溢出的對(duì)象寫到基于硬盤的緩存中; --> <!-- 設(shè)置緩存的默認(rèn)數(shù)據(jù)過期策略 --> <defaultCache maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="1200" timeToLiveSeconds="1200" overflowToDisk="false" /> <!-- 設(shè)定具體的第二級(jí)緩存的數(shù)據(jù)過期策略 --> <cache name="com.shawearn.model.User" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="3000" timeToLiveSeconds="3000" overflowToDisk="false" /> </ehcache>
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 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三個(gè)框架的整合
- Spring和Hibernate的整合操作示例
相關(guān)文章
JSP實(shí)現(xiàn)帶查詢條件的通用分頁(yè)組件
這篇文章主要為大家詳細(xì)介紹了JSP實(shí)現(xiàn)帶查詢條件的通用分頁(yè)組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件列表展示(二)
這篇文章主要為大家詳細(xì)介紹了Jsp+Servlet實(shí)現(xiàn)文件上傳下載功能的第二部分,文件列表展示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01jsp 連接sql server 2008 連接不上的解決方法
需要用到j(luò)sp 通過jdbc來訪問sql serve2008 , 結(jié)果在遇到好多問題,感覺被坑了個(gè)大。。2013-05-05jsp下頁(yè)面跳轉(zhuǎn)的幾種方法小結(jié)
jsp 頁(yè)面跳轉(zhuǎn)的幾種方法,需要的朋友可以參考下。2009-12-12