`
hain
  • 浏览: 455490 次
  • 来自: ...
社区版块
存档分类
最新评论

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

阅读更多

总体思路:使用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属性的注入注释掉。

<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的二级缓存: 

<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"></property>  
<property name="hibernate.cache.use_query_cache" value="false"></property><!--暂时不开query cache-->

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

<CACHE name="com.easyjf.security.Resource" maxelementsinmemory="1000" eternal="false" overflowtodisk="false" memorystoreevictionpolicy="LFU"></CACHE>  
<!--配置信息的说明如下:   
缺省缓存配置。CacheManager 会把这些配置应用到程序中。   
        下列属性是 defaultCache 必须的:   
  
        maxInMemory           - 设定内存中创建对象的最大值。   
        eternal                        - 设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超   
                                              时限制且元素永不消亡。   
        timeToIdleSeconds  - 设置某个元素消亡前的停顿时间。   
                                              也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。   
                                              这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则   
                                              设置该属性也无用)。   
                                              如果该值是 0 就意味着元素可以停顿无穷长的时间。   
        timeToLiveSeconds - 为元素设置消亡前的生存时间。   
                                               也就是一个元素从构建到消亡的最大时间间隔值。   
                                               这只能在元素不是永久驻留时有效。   
        overflowToDisk        - 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘   
                                               上。   
        
-->


4、然后修改Domain对象,对于要使用缓存的的Entity,在类声明前加上如下的标签:<BR>@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE),此处usage的值还需要根据应用情况进行必要的调整。<BR> </P><P>5、暂时使用ehcache作为Spring modules的cache。在ehcache.xml文件中继续配置用于为spring提供方法调用结果的缓存。大致如下:

<!--以下是为Spring提供的方法调用结果缓存-->  
      
 
<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*方法添加结果缓存,调整如下:

<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>


调整前对照: 

<BEAN class=com.easyjf.cms.service.impl.CmsManageServiceImpl id=cmsManageService></BEAN>     
  
<property name="newsAuthorDao" ref="newsAuthorDao"></property>  
  
<property name="newsDocDao" ref="newsDocDao"></property>
分享到:
评论

相关推荐

    easyjweb+jpa+spring+extjs续

    easyjweb+jpa+spring+extjs续:实现了综合配货系统后台管理,由于时间关系,有些细节没有考虑到,但是框架打气来,没有什么大问题,由于时间关系现在就更新到这,需要的请下载,认真学完现在更新的和以后更新的,项目...

    easyjweb+jpa+spring+extjs

    这是在做一个物流平台,一批项目:门户网站,配货系统,个人网站,二批,三排请关注我的更新,JAR包可以找我要(qq:438312413),目前只完成登录,权限出步验证(filter,后面会采用spring aop来实现细力度控制,可以...

    JPA+Spring2.0+EasyJWeb技术构架在企业级系统中的应用.ppt

    目录 企业级应用的特点 JPA及JPA使用技巧 使用泛型DAO来简化DAO层的开发 IOC容器、AOP及Spring2 EasyJWeb如何实现快速开发 小结

    Spring+EasyJWeb+iBatis版j2ee在线购物jpetstore系统源码

    Spring+EasyJWeb+iBatis版j2ee在线购物jpetstore系统,业务层及持久层使用springframework上的jpetsotre源码,表示层使用EasyJWeb,该系统是一个简单的J2EE网上商店系统,包括商品列表、购物车、用户管理、在线订单...

    easyjweb+extjs 进销存系统

    本项目是采用easyjweb+extjs来实现,里面包括下拉数,本地下拉框,远程下拉框,treepanle and gridpanel组合开发,页面布局,如果能吃透这个项目,项目项目经验可以提高一年

    EasyJWeb快速入门指南

    - **EJS组合**:利用EasyJWeb、JPA(Java Persistence API)和Spring框架共同构建高效的数据驱动型Web应用。 - **准备工作**: - 设计域模型:根据业务需求设计合理的数据模型。 - 执行EasyJWebTools脚本:自动...

    operamasks extjs jsf hibernate jpa spring 组合开发的一个crud

    和我之前上传的easyjweb两个框架有相同的地方,我希望我们共同努力把这两个框架结合起来,一起做开发。里面只是一个crud,项目是可以自动生成多表结合的,需要的可以把这个CRUD的例子下下来看一下,之后我会上传多表的,...

    EasyJWeb实用开发指南——开始EasyJWeb

    【EasyJWeb实用开发指南——开始EasyJWeb】 EasyJWeb是一款由中国开源团队EasyJF开发的Java Web应用程序框架,旨在简化和提高开发效率。它基于请求转发模型,采用MVC(Model-View-Controller)架构设计,使得开发者...

    wincvs、ajaxanywhere+struts示例+easyjweb指南

    【标题】"wincvs、ajaxanywhere+struts示例+easyjweb指南"涉及的是几个关键的IT技术领域,主要包括版本控制系统Wincvs、Web开发框架Struts与AjaxAnywhere的集成应用以及轻量级Java Web开发框架EasyJWeb的使用教程。...

    easyjweb配置文档

    2. `easyjweb project &lt;directory&gt; -ejs`:创建基于EasyJWeb、JPA和Spring的项目结构。 3. `easyjweb project &lt;directory&gt; -ejs -maven`:创建托管于Maven的EJS项目。 4. `easyjweb project &lt;directory&gt; -ejs -extjs...

    EasyJWEB2.0

    - **强大的持久层支持**:EasyJWeb 2.0 集成了多种数据库访问技术,如JDBC、Hibernate、MyBatis等,简化数据库操作。 **2. 易用性与灵活性** - **中文文档**:由于所有文档和注释都是中文,国内开发者可以无障碍地...

    Ext开发视频教程---ppt

    1. 后台采用EJS(EasyJWeb+JPA+Spring2.5),前台UI结合传统HTML和Ext。 **九、蓝源OA系统** 1. 技术架构同样基于EJS和Ext,权限系统采用acegi。 2. 功能涵盖日常办公、信息中心、组织机构管理等多个方面。 **十、...

    Ext简介及应用案例 ppt

    蓝源OA系统的技术架构同样依赖于EJS(EasyJWeb+JPA+Spring2.5)和Ext,提供了日常办公、信息中心、组织机构管理等功能。这些实例进一步证明了Ext在企业级Web应用中的广泛应用。 学习和掌握Ext开发,需要具备基本的...

    easyjweb-1.1

    EasyJWeb不仅适用于小型项目,通过与其他组件(如Spring、Hibernate)集成,也可以用于构建大型的企业级应用。开发者可以通过扩展EasyJWeb,实现自定义的拦截器、过滤器等功能,以满足特定的业务需求。 总结,...

    Easyjweb 1.2.2

    2. 简化开发流程:Easyjweb的核心目标是提高开发效率,它通过自动代码生成工具(如easyjweb-generator-1.2.jar中的工具)减少了重复的编码工作。例如,它可以自动生成DAO、Service和Action等代码,让开发者可以更快...

    EasyJWeb开发指南

    【EasyJWeb开发指南】 EasyJWeb是一款专为中国开发者打造的企业级Java Web应用程序开发框架,它结合了多种流行开源Web框架如Rails、Struts、JSF、Tapestry等的优点,旨在提供高效、易用的MVC(Model-View-...

    easyjweb1.2

    EasyJWeb是基于java技术,用于企业级Java Web应用程序快速开发的MVC框架。框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架,如Rails、Struts、JSF、Tapestry等,吸取其优点及...

    EasyJWeb源码构建指南

    【EasyJWeb源码构建指南】是一篇关于如何构建和设置EasyJWeb开源项目的文章。EasyJWeb采用了Subversion(SVN)作为版本控制工具,而Maven作为项目管理工具,确保开发流程的标准化和高效性。 首先,你需要获取源代码...

    EXTJS介绍与开发指南

    在技术架构上,EXTJS常与EJS(EasyJWeb+JPA+Spring2.5)后端框架配合使用,实现前后端分离。例如,蓝源OA系统也是采用这样的架构,同时引入acegi进行权限管理,提供日常办公、信息中心等功能。 为了更好地掌握EXTJS...

Global site tag (gtag.js) - Google Analytics