<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 115  文章 - 481  trackbacks - 0
    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    常用鏈接

    留言簿(19)

    隨筆檔案(115)

    文章檔案(4)

    新聞檔案(1)

    成員連接

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    總體思路:使用Hibernate3.2的二級(jí)緩存,解決使用頻率最多的find(Class clz,Object id)方法的緩存。

    一、使用Hibernate3.2的二級(jí)緩存功能,只開取針對(duì)id查找實(shí)體的緩存,不開啟基于list查詢的緩存。
    技術(shù)調(diào)整如下:
    1、升級(jí)Spring2的版本號(hào),升級(jí)為2.06,更新spring.jar、spring-aspects.jar、spring-mock.jar,為了使用spring modules中提供的cache功能,增加了spring-modules-cache.jar。以上包已經(jīng)添加到svn中。

    2、修改jpa-base.xml中的entityManagerFactory Bean的配置信息,把對(duì)loadTimeWeaver屬性的注入注釋掉。

    <BEAN class=org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean name="entityManagerFactory"></BEAN>  
      
    <property name="persistenceXmlLocation" value="classpath:persistence.xml"></property>  
      
    <property name="dataSource" ref="dataSource"></property>  
      
    <property name="jpaVendorAdapter">  
       
    <BEAN class=org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter></BEAN>  
        
    <property name="database" value="MYSQL"></property>  
        
    <property name="showSql" value="false"></property>  
        
    <property name="generateDdl" value="false"></property>  
     
      
    </property>  
      
    <!--   
      <property name="loadTimeWeaver">  
       <bean  
        class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />  
      </property>
    -->  


    在persistence.xml文件中,添加如下的配置信息,開啟Hibernate的二級(jí)緩存: 

    <property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"></property>  
    <property name="hibernate.cache.use_query_cache" value="false"></property><!--暫時(shí)不開query cache-->

    3、在src目錄下增加ehcache.xml,設(shè)置cache的配置信息,默認(rèn)情況下可以考慮給一些常用的Entity類設(shè)置一個(gè)單獨(dú)的cache區(qū)域,如下所示:

    <CACHE name="com.easyjf.security.Resource" maxelementsinmemory="1000" eternal="false" overflowtodisk="false" memorystoreevictionpolicy="LFU"></CACHE>  
    <!--配置信息的說明如下:   
    缺省緩存配置。CacheManager 會(huì)把這些配置應(yīng)用到程序中。   
            下列屬性是 defaultCache 必須的:   
      
            maxInMemory           - 設(shè)定內(nèi)存中創(chuàng)建對(duì)象的最大值。   
            eternal                        - 設(shè)置元素(譯注:內(nèi)存中對(duì)象)是否永久駐留。如果是,將忽略超   
                                                  時(shí)限制且元素永不消亡。   
            timeToIdleSeconds  - 設(shè)置某個(gè)元素消亡前的停頓時(shí)間。   
                                                  也就是在一個(gè)元素消亡之前,兩次訪問時(shí)間的最大時(shí)間間隔值。   
                                                  這只能在元素不是永久駐留時(shí)有效(譯注:如果對(duì)象永恒不滅,則   
                                                  設(shè)置該屬性也無用)。   
                                                  如果該值是 0 就意味著元素可以停頓無窮長(zhǎng)的時(shí)間。   
            timeToLiveSeconds - 為元素設(shè)置消亡前的生存時(shí)間。   
                                                   也就是一個(gè)元素從構(gòu)建到消亡的最大時(shí)間間隔值。   
                                                   這只能在元素不是永久駐留時(shí)有效。   
            overflowToDisk        - 設(shè)置當(dāng)內(nèi)存中緩存達(dá)到 maxInMemory 限制時(shí)元素是否可寫到磁盤   
                                                   上。   
            
    -->


    4、然后修改Domain對(duì)象,對(duì)于要使用緩存的的Entity,在類聲明前加上如下的標(biāo)簽:<BR>@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE),此處usage的值還需要根據(jù)應(yīng)用情況進(jìn)行必要的調(diào)整。<BR> </P><P>5、暫時(shí)使用ehcache作為Spring modules的cache。在ehcache.xml文件中繼續(xù)配置用于為spring提供方法調(diào)用結(jié)果的緩存。大致如下:

    <!--以下是為Spring提供的方法調(diào)用結(jié)果緩存-->  
          
     
    <CACHE name="CMSCache" maxelementsinmemory="5000" eternal="false" overflowtodisk="true" memorystoreevictionpolicy="LFU"></CACHE>  
     
    <CACHE name="ECCache" maxelementsinmemory="5000" eternal="false" overflowtodisk="true" memorystoreevictionpolicy="LFU"></CACHE>


    6、然后在具體的Service類中配置緩存。使用了AOP,需要修改spring的配置文件,比如cms-core.xml中為了給ICmsManageService的get*方法添加結(jié)果緩存,調(diào)整如下:

    <EHCACHE:PROXY id=cmsManageService>     
     
    <BEAN class=com.easyjf.cms.service.impl.CmsManageServiceImpl></BEAN>     
      
    <property name="newsAuthorDao" ref="newsAuthorDao"></property>  
      
    <property name="newsDocDao" ref="newsDocDao"></property>  
      
    <property name="newsDirDao" ref="newsDirDao"></property>  
      
    <property name="newsSourceDao" ref="newsSourceDao"></property>  
      
    <property name="reviewDao" ref="newsRivewDao"></property>  
        
     
    <EHCACHE:CACHING cachename="CMSCache" methodname="get*"></EHCACHE:CACHING>  
     
    <EHCACHE:FLUSHING methodname="update*" cachenames="CMSCache" when="before"></EHCACHE:FLUSHING>  
     
    </EHCACHE:PROXY>


    調(diào)整前對(duì)照: 

    <BEAN class=com.easyjf.cms.service.impl.CmsManageServiceImpl id=cmsManageService></BEAN>     
      
    <property name="newsAuthorDao" ref="newsAuthorDao"></property>  
      
    <property name="newsDocDao" ref="newsDocDao"></property>  
      
    <property name="newsDirDao" ref="newsDirDao"></property>  
      
    <property name="newsSourceDao" ref="newsSourceDao"></property>  
      
    <property name="reviewDao" ref="newsRivewDao"></property> 


    為了讓Spring配置文件能識(shí)別并處理<EHCACHE:XXX>這個(gè)標(biāo)簽,需要在beans中進(jìn)行schem聲明,如下所示:<BR>另外在spring配置文件中再增加<EHCACHE:CONFIG configlocation="classpath:ehcache.xml"></EHCACHE:CONFIG>,以便Spring能找到Cache配置文件。</EHCACHE:XXX>

    <BEANS xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:ehcache="http://www.springmodules.org/schema/ehcache" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd        http://www.springmodules.org/schema/ehcache http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd"></BEANS>  
       


    7、以上只是基本的配置,cache運(yùn)行的具體性能,還需要根據(jù)實(shí)際的數(shù)據(jù)量及并發(fā)量等進(jìn)行更加細(xì)致的調(diào)整。

    8、另外EasyJWeb還將會(huì)提供一個(gè)頁(yè)面結(jié)果緩存,直接緩存Action的執(zhí)行結(jié)果,這樣就可以解決訪問得最多,屬于嚴(yán)重性能瓶頸的問題。比如ec-brand.ejf、index.ejf等。這一功能將在9月15號(hào)前推出。

    9、一些必要的頁(yè)面,需要增加靜態(tài)文件生成功能。(逐漸調(diào)整)

    注釋:

     由于發(fā)現(xiàn)Spring2.06版本與當(dāng)前我們使用的版本存在一些沖突。而且跟EasyJWeb中的maven混合編譯的時(shí)候存在一些問題,因此暫時(shí)取消使用Spring的方法Cache,而只使用Hibernate的Cache及EasyJWeb的緩存配合。EasyJWeb的緩存簡(jiǎn)單機(jī)制已經(jīng)實(shí)現(xiàn),直接在基于AbstractCmdAction的Action中,在要緩存的Command中使用緩存標(biāo)簽@WebCache即可。

    posted on 2007-11-28 16:53 簡(jiǎn)易java框架 閱讀(1289) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲色欲色欲www在线丝 | 亚洲免费视频在线观看| 久久亚洲AV成人无码电影| 国产成人A在线观看视频免费 | 3d成人免费动漫在线观看| 亚洲偷自拍另类图片二区| 精品亚洲视频在线观看| 日本免费一区二区在线观看 | 100000免费啪啪18免进| 水蜜桃视频在线观看免费| 亚洲AV无码成人专区片在线观看| 成人黄软件网18免费下载成人黄18免费视频| 精品在线视频免费| 91情国产l精品国产亚洲区 | 久久亚洲高清综合| 91频在线观看免费大全| 久久WWW免费人成—看片| 亚洲AV无码一区二区三区牛牛| 久久精品国产亚洲5555| 最近最新中文字幕完整版免费高清| 中文字幕免费播放| 亚洲国产精品日韩av不卡在线| 亚洲AV无码一区二区三区DV| 国产不卡免费视频| 久久国产免费福利永久| 99re8这里有精品热视频免费| 亚洲国产精品成人综合色在线| 久久精品7亚洲午夜a| 国产一区在线观看免费| 蜜桃AV无码免费看永久| 国产免费伦精品一区二区三区| 亚洲精品永久在线观看| 在线观看亚洲一区二区| 国产亚洲美女精品久久久| 日本无卡码免费一区二区三区| 黄色网址免费观看| 日韩精品无码专区免费播放| 成av免费大片黄在线观看| 另类图片亚洲校园小说区| 亚洲色大成网站www久久九| 亚洲最大在线观看|