1、首先设置EhCache,建立配置文件ehcache.xml,默认的位置在class-path,可以放到你的src目录下:
<?xml version="1.0" encoding="UTF-8"?> <ehcache> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="10000" <!-- 缓存最大数目 --> eternal="false" <!-- 缓存是否持久 --> overflowToDisk="true" <!-- 是否保存到磁盘,当系统当机时--> timeToIdleSeconds="300" <!-- 当缓存闲置n秒后销毁 --> timeToLiveSeconds="180" <!-- 当缓存存活n秒后销毁--> diskPersistent="false" diskExpiryThreadIntervalSeconds= "120"/> </ehcache> |
2、在Hibernate配置文件中设置:
<!-- 设置Hibernate的缓存接口类,这个类在Hibernate包中 --> <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <!-- 是否使用查询缓存 --> <property name="hibernate.cache.use_query_cache">true</property> 如果使用spring调用Hibernate的sessionFactory的话,这样设置: <!--HibernateSession工厂管理 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="datasource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> <prop key="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> </props> </property> <property name="mappingDirectoryLocations"> <list> <value>/WEB-INF/classes/cn/rmic/manager/hibernate/</value> </list> </property> </bean> |
说明一下:如果不设置“查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置
hibernate.cache.use_query_cache true 才行
3、在Hbm文件中添加<cache usage="read-only"/>
4、如果需要“查询缓存”,还需要在使用Query或Criteria()时设置其setCacheable(true);属性
5、实践出真知,给一段测试程序,如果成功的话第二次查询时不会读取数据库
package cn.rmic.hibernatesample;
import java.util.List;
import org.hibernate.CacheMode; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session;
import cn.rmic.hibernatesample.hibernate.HibernateSessionFactory; import cn.rmic.manager.po.Resources;
public class testCacheSelectList ...{
/** *//** * @param args */ public static void main(String[] args) ...{ // TODO Auto-generated method stub
Session s=HibernateSessionFactory.getSession(); Criteria c=s.createCriteria(Resources.class); c.setCacheable(true); List l=c.list(); // Query q=s.createQuery("From Resources r") // .setCacheable(true) // .setCacheRegion("frontpages") ; // List l=q.list(); Resources resources=(Resources)l.get(0); System.out.println("-1-"+resources.getName()); HibernateSessionFactory.closeSession(); try ...{ Thread.sleep(5000); } catch (InterruptedException e) ...{ // TODO Auto-generated catch block e.printStackTrace(); } s=HibernateSessionFactory.getSession(); c=s.createCriteria(Resources.class); c.setCacheable(true); l=c.list(); // q=s.createQuery("From Resources r").setCacheable(true) // .setCacheRegion("frontpages"); // l=q.list(); resources=(Resources)l.get(0); System.out.println("-2-"+resources.getName()); HibernateSessionFactory.closeSession(); } } |
分享到:
相关推荐
- 第二级缓存:SessionFactory实例间的共享缓存,跨Session存储数据,提高多个并发请求的效率。 4. **缓存更新与失效** - 更新策略:当数据发生变化时,需要同步更新缓存,可以使用`@CacheEvict`注解实现缓存的...
- 在Hibernate配置文件(如`hibernate.cfg.xml`)中启用二级缓存并指定Ehcache为缓存提供者。 - 配置Ehcache的XML配置文件,定义缓存区域、大小、过期策略等。 - 在实体类或映射文件中启用缓存,并指定缓存策略。 4...
Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的直接访问。当相同的数据再次被请求时,可以从缓存中快速获取,提高系统响应速度。在不使用缓存的情况下,可以通过配置关闭。 5...
EhCache 是 Hibernate 的二级缓存技术之一,可以把查询出来的数据存储在内存或者磁盘,节省下次同样查询语句再次查询数据库,大幅减轻数据库压力。 EhCache 的使用注意点: 1. 当用 Hibernate 的方式修改表数据...
**Ehcache** 是一个高性能的、内存级别的缓存系统,它可以作为Hibernate的二级缓存插件。二级缓存可以存储在会话工厂级别,使得多个会话可以共享相同的数据,从而提高了数据的复用性和性能。Ehcache支持本地缓存和...
3. **集成Ehcache与Hibernate**:在Hibernate中配置Ehcache作为二级缓存,可以将频繁查询的数据保存在内存中,避免重复的数据库调用。这涉及到修改Hibernate配置文件(如`hibernate.cfg.xml`),添加Ehcache的相关...
SSH三层架构MVC(struts1.3+spring2.x+hibernate3.2),Hibernate(ehcache)二级缓存技术,Spring 注解形式依赖注入,ehcache缓存 源代码,内有MySql anbyke.sql文件,方便创建数据库演示效果!
例如,为了使用Ehcache,需要在Spring配置文件中添加Ehcache的相关bean,然后在Hibernate的SessionFactory配置中启用二级缓存。此外,还需要在Struts的Action中调用由Spring管理的业务服务,这些服务通常会利用...
ehcache全解析 利用Spring和EHCache缓存结果 Hibernate+ehcache二级缓存技术 Spring基于注解的缓存配置--web应用实例 http://zjava.org.ru/
Ehcache是Hibernate常用的二级缓存解决方案,它可以提高应用程序的性能和响应速度。这篇博客文章“hibernate缓存ehcache用法”可能详细介绍了如何在Hibernate中配置和使用Ehcache。 首先,我们需要理解什么是缓存。...
`caching`和`Hibernate+ehcache二级缓存配置 - 王贵伟 - JavaEye技术网站.files`、`spring中配置二级缓存.files`这些目录可能包含了相关配置文件和资源。 总的来说,Spring二级缓存通过集成EhCache,实现了跨会话的...
在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...
它支持事务管理,提供了性能优化的特性,如二级缓存和批处理。 **Freemarker**: Freemarker是一个模板引擎,用于生成动态HTML、XML或其他格式的文档。在Spring4MVC中,Freemarker作为视图解析器,接收来自...
Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...
Spring3支持Hibernate的二级缓存,可以通过注解来启用或禁用缓存。例如,使用`@Cacheable`、`@CacheEvict`和`@CacheConfig`等注解,分别用于读取缓存、清除缓存和全局缓存配置。 4. **实体类缓存配置** 对于需要...
2. 配置Hibernate:在hibernate.cfg.xml文件中启用二级缓存,并指定使用Ehcache作为二级缓存提供者。 3. 配置实体类:在实体类上使用`@Cacheable`、`@Cache`等注解,声明该类及属性参与缓存。 4. 配置缓存策略:...
### Hibernate二级缓存技术详解 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用与关系型数据库之间的交互。为了提高性能和减少数据库的访问频率,Hibernate 提供了一级缓存和二...
1. 引入二级缓存库:如 Ehcache 或 Infinispan。 2. 在 Hibernate 配置文件中启用二级缓存。 3. 在实体类上添加 `@Cacheable` 注解或者在映射文件中配置 `<cache>` 元素。 4. 配置实体类的缓存策略,例如使用 `@...
【标题】:“Hibernate二级缓存(Ehcache)” 【正文】: Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作。然而,随着应用规模的扩大,性能优化变得至关重要,...