Spring+Hibernate+EHcache配置(query缓存)
大量数据流动是web应用性能问题常见的原因,而缓存被广泛的用于优化数据库应用。cache被设计为通过保存从数据库里load的数据来减少应用和数据库之间的数据流动。数据库访问只有当检索的数据不在cache里可用时才必要。hibernate可以用两种不同的对象缓存:first-level cache 和 second-level cache。first-level cache和Session对象关联,而second-level cache是和Session Factory对象关联。
缺省地,hibernate已经使用基于每个事务的first-level cache。Hibernate用first-level cache主要是减少在一个事务内的sql查询数量。例如,如果一个对象在同一个事务内被修改多次,hibernate将只生成一个包括所有修改的UPDATE SQL语句。为了减少数据流动,second-level cache在Session Factory级的不同事务之间保持load的对象,这些对象对整个应用可用,不只是对当前用户正在运行的查询。这样,每次查询将返回已经load在缓存里的对象,避免一个或更多潜在的数据库事务。
下载ehcache,hibernate3.2必须要ehcache1.2以上才能支持。可以修改log4j配置文件log4j.logger.net.sf.hibernate.cache=debug查看日志
1.在类路径上ehcache.xml:
<ehcache>
<!-- Sets the path to the directory where cache .data files are created.
If the path is a Java System Property it is replaced by its value in the running VM.
The following properties are translated: user.home - User's home directory user.dir - User's current working directory java.io.tmpdir - Default temp file path --> <diskStore path="java.io.tmpdir"/>
<!--Default Cache configuration. These will applied to caches programmatically created through the CacheManager.
The following attributes are required:
maxElementsInMemory - Sets the maximum number of objects that will be created in memory eternal - Sets whether elements are eternal. If eternal, timeouts are ignored and the element is never expired. overflowToDisk - Sets whether elements can overflow to disk when the in-memory cache has reached the maxInMemory limit.
The following attributes are optional: timeToIdleSeconds - Sets the time to idle for an element before it expires. i.e. The maximum amount of time between accesses before an element expires Is only used if the element is not eternal. Optional attribute. A value of 0 means that an Element can idle for infinity. The default value is 0. timeToLiveSeconds - Sets the time to live for an element before it expires. i.e. The maximum time between creation time and when an element expires. Is only used if the element is not eternal. Optional attribute. A value of 0 means that and Element can live for infinity. The default value is 0. diskPersistent - Whether the disk store persists between restarts of the Virtual Machine. The default value is false. diskExpiryThreadIntervalSeconds- The number of seconds between runs of the disk expiry thread. The default value is 120 seconds. -->
<defaultCache maxElementsInMemory="10000" eternal="false" overflowToDisk="true" timeToIdleSeconds="120" timeToLiveSeconds="120" diskPersistent="false" diskExpiryThreadIntervalSeconds="120"/> <!-- See http://ehcache.sourceforge.net/documentation/#mozTocId258426 for how to configure caching for your objects --> </ehcache>
|
2.applicationContext-hibernate.xml里Hibernate SessionFactory配置:
<!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property> <!-- The property below is commented out b/c it doesn't work when run via Ant in Eclipse. It works fine for individual JUnit tests and in IDEA ?? <property name="mappingJarLocations"> <list><value>file:dist/appfuse-dao.jar</value></list> </property> --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">@HIBERNATE-DIALECT@</prop> <!--<prop key="hibernate.show_sql">true</prop>--> <prop key="hibernate.max_fetch_depth">3</prop> <prop key="hibernate.hibernate.use_outer_join">true</prop> <prop key="hibernate.jdbc.batch_size">10</prop> <prop key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.cache.use_second_level_cache">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <!-- <prop key="hibernate.use_sql_comments">false</prop> --> <!-- Create/update the database tables automatically when the JVM starts up <prop key="hibernate.hbm2ddl.auto">update</prop> --> <!-- Turn batching off for better error messages under PostgreSQL <prop key="hibernate.jdbc.batch_size">0</prop> --> </props> </property> <property name="entityInterceptor"> <ref local="auditLogInterceptor"/> </property> </bean>
|
说明:如果不设置“查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、 list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置hibernate.cache.use_query_cache true 才行
3.model类里采用Xdoclet生成*.hbm.xml里的cache xml标签,即<cache usage="read-only"/>
/** * @hibernate.class table="WF_WORKITEM_HIS" * @hibernate.cache usage="read-write" * */
|
4.对于"query cache",需要在程序里编码:
getHibernateTemplate().setCacheQueries(true);
return getHibernateTemplate().find(hql);
分享到:
相关推荐
1. **配置Ehcache**: 首先,我们需要在项目中添加Ehcache的依赖,并创建一个Ehcache配置文件,定义缓存的策略、大小限制等。在Spring中,可以通过`@EnableCaching`注解开启缓存支持,并通过`CacheManager`配置...
spring+ehcache+mabatis。测试用例用的是mysql,数据库的配置在jdbc.properties里面。所要的sql在src/main/resources下的student.sql。测试的话调用controller下的update和getOne那两个接口测试。
Spring 和 Ehcache 是两个在Java开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,使得应用程序的构建变得更加简洁和模块化。Ehcache...
1.通过google ehcache-spring-annotatios.jar自动注解方式实现整合Spring+Ehcache。 2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。...
3. **Ehcache配置文件** `ehcache.xml`是Ehcache的配置文件,用于定义缓存的名称、大小、过期策略等。例如: ```xml <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...
然后,在Spring的主配置文件中,如`applicationContext.xml`,我们需要导入Ehcache的配置,并声明一个EhcacheManager: ```xml <bean id="cacheManager" class="org.springframework.cache.ehcache....
【标题】"maven+spring+ehcache"的组合是一个常见的Java Web开发框架,用于构建高效、可维护的项目。这个实例演示了如何利用Maven作为构建工具,Spring作为核心框架,Ehcache作为缓存解决方案,以及Spring JDBC处理...
Ehcache的配置包括在Spring配置文件中声明CacheManager,以及定义需要缓存的bean和对应的缓存策略。 4. **编写Mapper接口和XML映射文件** iBatis中的Mapper接口对应数据库操作,XML映射文件定义了SQL语句和结果...
3. **Spring配置**:在Spring的配置文件(如applicationContext.xml)中启用Ehcache支持,并加载上面的ehcache.xml配置。例如: ```xml <bean id="cacheManager" class="org.springframework.cache.ehcache....
在Spring中整合Ehcache,可以通过Spring的缓存抽象进行配置,定义缓存注解如`@Cacheable`、`@CacheEvict`、`@CachePut`来控制缓存的存取和清除。Ehcache的配置文件(ehcache.xml)可以指定缓存的大小、存活时间和...
例如,为了使用Ehcache,需要在Spring配置文件中添加Ehcache的相关bean,然后在Hibernate的SessionFactory配置中启用二级缓存。此外,还需要在Struts的Action中调用由Spring管理的业务服务,这些服务通常会利用...
3. **Ehcache配置**:`ehcache.xml`文件定义了缓存的命名空间、大小限制、存活时间和过期策略。Ehcache可以缓存查询结果,减少对数据库的频繁访问,提高系统响应速度。 4. **实体类和映射文件**:Hibernate通过ORM...
本文将深入探讨Spring如何与EhCache协同工作,以及如何在实际项目中实施和配置。 **1. EhCache简介** EhCache是Java的一个开源、高性能、可扩展的缓存库,它支持内存和磁盘存储,可以进行分布式缓存。EhCache提供...
Ehcache可以很好地与Spring集成,通过简单的配置即可实现缓存管理。 在整合这些技术时,首先需要在Spring的配置文件中定义bean,包括数据源、SqlSessionFactory(Mybatis的核心)、MapperScannerConfigurer(扫描...
本文将深入探讨如何在Spring框架中通过注解方式配置Ehcache,以便优化应用程序的性能。 首先,让我们理解Spring与Ehcache结合的基本概念。Ehcache是一个内存缓存系统,它可以存储数据到内存中,从而减少数据库的...
在web.xml中配置spring容器的监听器。 2:项目集成springmvc 在web.xml中配置前端控制器 3:项目集成shiro 在web.xml中配置shiro过滤器 4:项目post乱码处理 在web.xml中配置字符过滤器 5:项目运行...
配置Ehcache,我们可以在Spring的配置文件中定义一个`CacheManager` bean,指定Ehcache的配置文件路径。Ehcache的配置文件(如ehcache.xml)包含了缓存的命名空间、大小限制、过期策略等信息。例如: ```xml ...
3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,添加Ehcache的bean配置,以使Spring能够管理Ehcache: ```xml <bean id="cacheManager" class="org.springframework.cache.ehcache....
在Java开发领域,Spring框架是应用最广泛的轻量级框架之一,它提供了全面的编程和配置模型,使得开发者能够创建出高效、灵活且可维护的系统。而Acegi Security(现在已经更名为Spring Security)是Spring生态体系中...
- 配置Spring:在Spring配置文件中启用缓存管理器,并指定使用Ehcache。 - 使用注解:在需要缓存的方法上添加`@Cacheable`、`@CacheEvict`等注解。 **二、Spring Cache注解** 1. **@Cacheable** 此注解用于标记...