總體思路:使用Hibernate3.2的二級(jí)緩存,解決使用頻率最多的find(Class clz,Object id)方法的緩存。
一、使用Hibernate3.2的二級(jí)緩存功能,只開(kāi)取針對(duì)id查找實(shí)體的緩存,不開(kāi)啟基于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屬性的注入注釋掉。






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


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


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作為Springmodules的cache。在ehcache.xml文件中繼續(xù)配置用于為spring提供方法調(diào)用結(jié)果的緩存。大致如下:




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



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


為了讓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
>




7、以上只是基本的配置,cache運(yùn)行的具體性能,還需要根據(jù)實(shí)際的數(shù)據(jù)量及并發(fā)量等進(jìn)行更加細(xì)致的調(diào)整。
8、另外EasyJWeb還將會(huì)提供一個(gè)頁(yè)面結(jié)果緩存,直接緩存Action的執(zhí)行結(jié)果,這樣就可以解決訪問(wèn)得最多,屬于嚴(yán)重性能瓶頸的問(wè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í)候存在一些問(wèn)題,因此暫時(shí)取消使用Spring的方法Cache,而只使用Hibernate的Cache及EasyJWeb的緩存配合。EasyJWeb的緩存簡(jiǎn)單機(jī)制已經(jīng)實(shí)現(xiàn),直接在基于AbstractCmdAction的Action中,在要緩存的Command中使用緩存標(biāo)簽@WebCache即可。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1906489
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
