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

主頁 > 知識(shí)庫 > JSP 開發(fā)之hibernate配置二級(jí)緩存的方法

JSP 開發(fā)之hibernate配置二級(jí)緩存的方法

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

JSP 開發(fā)之hibernate配置二級(jí)緩存的方法

hibernate二級(jí)緩存也稱為進(jìn)程級(jí)的緩存或SessionFactory級(jí)的緩存。

二級(jí)緩存是全局緩存,它可以被所有的session共享。

二級(jí)緩存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二級(jí)緩存。

常用的緩存插件 Hibernater二級(jí)緩存是一個(gè)插件,下面是幾種常用的緩存插件:

  • EhCache:可作為進(jìn)程范圍的緩存,存放數(shù)據(jù)的物理介質(zhì)可以是內(nèi)存或硬盤,對(duì)Hibernate的查詢緩存提供了支持。
  • OSCache:可作為進(jìn)程范圍的緩存,存放數(shù)據(jù)的物理介質(zhì)可以是內(nèi)存或硬盤,提供了豐富的緩存數(shù)據(jù)過期策略,對(duì)Hibernate的查詢緩存提供了支持。
  • SwarmCache:可作為群集范圍內(nèi)的緩存,但不支持Hibernate的查詢緩存。
  • JBossCache:可作為群集范圍內(nèi)的緩存,支持事務(wù)型并發(fā)訪問策略,對(duì)Hibernate的查詢緩存提供了支持。

如何在程序里使用二級(jí)緩存:

首先在hibernate.cfg.xml開啟二級(jí)緩存


hibernate-configuration> 
  session-factory> 

   ...... 

   !-- 開啟二級(jí)緩存 --> 
   property name="hibernate.cache.use_second_level_cache">true/property> 
   !-- 啟動(dòng)"查詢緩存"如果想緩存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法獲得的數(shù)據(jù)結(jié)果集,必須配置此項(xiàng)--> 
   property name="hibernate.cache.use_query_cache">true/property> 
   !-- 設(shè)置二級(jí)緩存插件EHCache的Provider類--> 
   !-- property name="hibernate.cache.provider_class"> 
     org.hibernate.cache.EhCacheProvider 
   /property> --> 
   !-- 二級(jí)緩存區(qū)域名的前綴 --> 
   !--property name="hibernate.cache.region_prefix">test/property>--> 
   !-- 高速緩存提供程序 --> 
   property name="hibernate.cache.region.factory_class"> 
     net.sf.ehcache.hibernate.EhCacheRegionFactory 
   /property> 
   !-- Hibernate4以后都封裝到org.hibernate.cache.ehcache.EhCacheRegionFactory --> 
   !-- 指定緩存配置文件位置 --> 
   !-- property name="hibernate.cache.provider_configuration_file_resource_path"> 
     ehcache.xml 
   /property> --> 
   !-- 強(qiáng)制Hibernate以更人性化的格式將數(shù)據(jù)存入二級(jí)緩存 --> 
   property name="hibernate.cache.use_structured_entries">true/property> 

   !-- Hibernate將收集有助于性能調(diào)節(jié)的統(tǒng)計(jì)數(shù)據(jù) --> 
   property name="hibernate.generate_statistics">true/property> 

   ...... 

  /session-factory> 
/hibernate-configuration> 

然后是ehcache配置(ehcache.xml)

cache參數(shù)詳解:

● name:指定區(qū)域名
● maxElementsInMemory :緩存在內(nèi)存中的最大數(shù)目
● maxElementsOnDisk:緩存在磁盤上的最大數(shù)目
● eternal :設(shè)置是否永遠(yuǎn)不過期
● overflowToDisk : 硬盤溢出數(shù)目
● timeToIdleSeconds :對(duì)象處于空閑狀態(tài)的最多秒數(shù)后銷毀
● timeToLiveSeconds :對(duì)象處于緩存狀態(tài)的最多秒數(shù)后銷毀
● memoryStoreEvictionPolicy:緩存算法,有LRU(默認(rèn))、LFU、LFU

關(guān)于緩存算法,常見有三種:

● LRU:(Least Rencently Used)新來的對(duì)象替換掉使用時(shí)間算最近很少使用的對(duì)象
● LFU:(Least Frequently Used)替換掉按命中率高低算比較低的對(duì)象
● LFU:(First In First Out)把最早進(jìn)入二級(jí)緩存的對(duì)象替換掉

Xml代碼

?xml version="1.0" encoding="UTF-8"?> 
ehcache> 
 !--如果緩存中的對(duì)象存儲(chǔ)超過指定的緩存數(shù)量的對(duì)象存儲(chǔ)的磁盤地址--> 
 diskStore path="D:/ehcache"/> 

 !-- 默認(rèn)cache:如果沒有對(duì)應(yīng)的特定區(qū)域的緩存,就使用默認(rèn)緩存 --> 
 defaultCache maxElementsInMemory="10000" 
        eternal="false" 
        timeToIdleSeconds="300"  
        timeToLiveSeconds="600" 
        overflowToDisk="false"/> 
 !-- 指定區(qū)域cache:通過name指定,name對(duì)應(yīng)到Hibernate中的區(qū)域名即可--> 
 cache name="cn.javass.h3test.model.UserModel" 
        eternal="false" 
        maxElementsInMemory="100" 
        timeToIdleSeconds="1200" 
        timeToLiveSeconds="1200" 
        overflowToDisk="false"> 
 /cache> 
 /ehcache> 

在每個(gè)實(shí)體的hbm文件中配置cache元素,usage可以是read-only或者是read-write等4種。

Xml代碼

class> 
!-- 設(shè)置該持久化類的二級(jí)緩存并發(fā)訪問策略 read-only read-write nonstrict-read-write transactional--> 
    class name="cn.java.test.model.User" table="TBL_USER"> 
       cache usage="read-write"/> 
    ......  
  /class> 
/hibernate-mapping> 

**也可以用Hibernate注解配置緩存實(shí)體類** 

**Java代碼 
@Entity  
@Table  
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 
public class User implements Serializable {  
  private static final long serialVersionUID = -5121812640999313420L; 
  private Integer id; 
  private String name; 

  ...... 
}**

以上就是hibernate 二級(jí)緩存的兩種實(shí)現(xiàn)方法,本站關(guān)于JSP hibernate開發(fā)的文章還有很多,希望大家多多搜出查閱,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • 詳細(xì)解讀Hibernate的緩存機(jī)制
  • hibernate查詢緩存詳細(xì)分析
  • 詳解Hibernate注解方式的二級(jí)緩存
  • 詳解spring boot集成ehcache 2.x 用于hibernate二級(jí)緩存
  • java中hibernate二級(jí)緩存詳解
  • 詳解Hibernate緩存與性能優(yōu)化
  • Spring 整合 Hibernate 時(shí)啟用二級(jí)緩存實(shí)例詳解
  • Hibernate緩存機(jī)制實(shí)例代碼解析

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

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

    • 400-1100-266
    盘锦市| 新疆| 哈尔滨市| 什邡市| 安徽省| 漯河市| 中阳县| 米林县| 肥西县| 延长县| 天门市| 亳州市| 永靖县| 遂溪县| 互助| 德惠市| 揭东县| 阿坝| 磐石市| 庆安县| 荥阳市| 习水县| 左贡县| 彩票| 徐水县| 乌海市| 尼勒克县| 龙胜| 保亭| 海丰县| 宁陵县| 西青区| 金昌市| 什邡市| 寻乌县| 长春市| 惠东县| 承德市| 金华市| 灵宝市| 新田县|