您的位置:首页 > 编程语言 > Java开发

EasyJWeb+JPA(Hibernate3.2)+Spring2构架缓存技术

2008-06-08 10:38 375 查看
总体思路:使用Hibernate3.2的二级缓存,解决使用频率最多的find(Class clz,Object id)方法的缓存。
一、使用Hibernate3.2的二级缓存功能,只开取针对id查找实体的缓存,不开启基于list查询的缓存。
技术调整如下:
1、升级Spring2的版本号,升级为2.06,更新spring.jar、spring-aspects.jar、spring-mock.jar,为了使用spring modules中提供的cache功能,增加了spring-modules-cache.jar。以上包已经添加到svn中。
2、修改jpa-base.xml中的entityManagerFactory Bean的配置信息,把对loadTimeWeaver属性的注入注释掉。


  


    


    


    


     


    ="database" value="MYSQL">  


      


      
 


    


    
在persistence.xml文件中,添加如下的配置信息,开启Hibernate的二级缓存: 


  


3、在src目录下增加ehcache.xml,设置cache的配置信息,默认情况下可以考虑给一些常用的Entity类设置一个单独的cache区域,如下所示:


  



4、然后修改Domain对象,对于要使用缓存的的Entity,在类声明前加上如下的标签:
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE),此处usage的值还需要根据应用情况进行必要的调整。
 

5、暂时使用ehcache作为Spring modules的cache。在ehcache.xml文件中继续配置用于为spring提供方法调用结果的缓存。大致如下:


  


      


   


 
6、然后在具体的Service类中配置缓存。使用了AOP,需要修改spring的配置文件,比如cms-core.xml中为了给ICmsManageService的get*方法添加结果缓存,调整如下:


     


 =com.easyjf.cms.service.impl.CmsManageServiceImpl>     


  ="newsAuthorDao" ref="newsAuthorDao">  


    


    


    


    


    


   


   


 
调整前对照: 


     


  ="newsAuthorDao" ref="newsAuthorDao">  


    


    


    


   
为了让Spring配置文件能识别并处理这个标签,需要在beans中进行schem声明,如下所示:
另外在spring配置文件中再增加,以便Spring能找到Cache配置文件。



  




   



7、以上只是基本的配置,cache运行的具体性能,还需要根据实际的数据量及并发量等进行更加细致的调整。
8、另外EasyJWeb还将会提供一个页面结果缓存,直接缓存Action的执行结果,这样就可以解决访问得最多,属于严重性能瓶颈的问题。比如ec-brand.ejf、index.ejf等。这一功能将在9月15号前推出。
9、一些必要的页面,需要增加静态文件生成功能。(逐渐调整)
注释:
  由于发现Spring2.06版本与当前我们使用的版本存在一些冲突。而且跟EasyJWeb中的maven混合编译的时候存在一些问题,因此暂时取消使用Spring的方法Cache,而只使用Hibernate的Cache及EasyJWeb的缓存配合。EasyJWeb的缓存简单机制已经实现,直接在基于AbstractCmdAction的Action中,在要缓存的Command中使用缓存标签@WebCache即可。


总体思路:使用Hibernate3.2的二级缓存,解决使用频率最多的find(Class clz,Object id)方法的缓存。
一、使用Hibernate3.2的二级缓存功能,只开取针对id查找实体的缓存,不开启基于list查询的缓存。
技术调整如下:
1、升级Spring2的版本号,升级为2.06,更新spring.jar、spring-aspects.jar、spring-mock.jar,为了使用spring modules中提供的cache功能,增加了spring-modules-cache.jar。以上包已经添加到svn中。
2、修改jpa-base.xml中的entityManagerFactory Bean的配置信息,把对loadTimeWeaver属性的注入注释掉。


  


    


    


    


     


    ="database" value="MYSQL">  


      


      
 


    


    
在persistence.xml文件中,添加如下的配置信息,开启Hibernate的二级缓存: 


  


3、在src目录下增加ehcache.xml,设置cache的配置信息,默认情况下可以考虑给一些常用的Entity类设置一个单独的cache区域,如下所示:


  



4、然后修改Domain对象,对于要使用缓存的的Entity,在类声明前加上如下的标签:
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE),此处usage的值还需要根据应用情况进行必要的调整。
 

5、暂时使用ehcache作为Spring modules的cache。在ehcache.xml文件中继续配置用于为spring提供方法调用结果的缓存。大致如下:


  


      


   


 
6、然后在具体的Service类中配置缓存。使用了AOP,需要修改spring的配置文件,比如cms-core.xml中为了给ICmsManageService的get*方法添加结果缓存,调整如下:


     


 =com.easyjf.cms.service.impl.CmsManageServiceImpl>     


  ="newsAuthorDao" ref="newsAuthorDao">  


    


    


    


    


    


   


   


 
调整前对照: 


     


  ="newsAuthorDao" ref="newsAuthorDao">  


    


    


    


   
为了让Spring配置文件能识别并处理这个标签,需要在beans中进行schem声明,如下所示:
另外在spring配置文件中再增加,以便Spring能找到Cache配置文件。



  




   



7、以上只是基本的配置,cache运行的具体性能,还需要根据实际的数据量及并发量等进行更加细致的调整。
8、另外EasyJWeb还将会提供一个页面结果缓存,直接缓存Action的执行结果,这样就可以解决访问得最多,属于严重性能瓶颈的问题。比如ec-brand.ejf、index.ejf等。这一功能将在9月15号前推出。
9、一些必要的页面,需要增加静态文件生成功能。(逐渐调整)
注释:
  由于发现Spring2.06版本与当前我们使用的版本存在一些冲突。而且跟EasyJWeb中的maven混合编译的时候存在一些问题,因此暂时取消使用Spring的方法Cache,而只使用Hibernate的Cache及EasyJWeb的缓存配合。EasyJWeb的缓存简单机制已经实现,直接在基于AbstractCmdAction的Action中,在要缓存的Command中使用缓存标签@WebCache即可。


总体思路:使用Hibernate3.2的二级缓存,解决使用频率最多的find(Class clz,Object id)方法的缓存。
一、使用Hibernate3.2的二级缓存功能,只开取针对id查找实体的缓存,不开启基于list查询的缓存。
技术调整如下:
1、升级Spring2的版本号,升级为2.06,更新spring.jar、spring-aspects.jar、spring-mock.jar,为了使用spring modules中提供的cache功能,增加了spring-modules-cache.jar。以上包已经添加到svn中。
2、修改jpa-base.xml中的entityManagerFactory Bean的配置信息,把对loadTimeWeaver属性的注入注释掉。


  


    


    


    


     


    ="database" value="MYSQL">  


      


      
 


    


    
在persistence.xml文件中,添加如下的配置信息,开启Hibernate的二级缓存: 


  


3、在src目录下增加ehcache.xml,设置cache的配置信息,默认情况下可以考虑给一些常用的Entity类设置一个单独的cache区域,如下所示:


  



4、然后修改Domain对象,对于要使用缓存的的Entity,在类声明前加上如下的标签:
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE),此处usage的值还需要根据应用情况进行必要的调整。
 

5、暂时使用ehcache作为Spring modules的cache。在ehcache.xml文件中继续配置用于为spring提供方法调用结果的缓存。大致如下:


  


      


   


 
6、然后在具体的Service类中配置缓存。使用了AOP,需要修改spring的配置文件,比如cms-core.xml中为了给ICmsManageService的get*方法添加结果缓存,调整如下:


     


 =com.easyjf.cms.service.impl.CmsManageServiceImpl>     


  ="newsAuthorDao" ref="newsAuthorDao">  


    


    


    


    


    


   


   


 
调整前对照: 


     


  ="newsAuthorDao" ref="newsAuthorDao">  


    


    


    


   
为了让Spring配置文件能识别并处理这个标签,需要在beans中进行schem声明,如下所示:
另外在spring配置文件中再增加,以便Spring能找到Cache配置文件。



  




   



7、以上只是基本的配置,cache运行的具体性能,还需要根据实际的数据量及并发量等进行更加细致的调整。
8、另外EasyJWeb还将会提供一个页面结果缓存,直接缓存Action的执行结果,这样就可以解决访问得最多,属于严重性能瓶颈的问题。比如ec-brand.ejf、index.ejf等。这一功能将在9月15号前推出。
9、一些必要的页面,需要增加静态文件生成功能。(逐渐调整)
注释:
  由于发现Spring2.06版本与当前我们使用的版本存在一些冲突。而且跟EasyJWeb中的maven混合编译的时候存在一些问题,因此暂时取消使用Spring的方法Cache,而只使用Hibernate的Cache及EasyJWeb的缓存配合。EasyJWeb的缓存简单机制已经实现,直接在基于AbstractCmdAction的Action中,在要缓存的Command中使用缓存标签@WebCache即可。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: