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的话,这样设置:
<!--Hibernate
Session工厂管理 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate
3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="datasource" />
</property>
<property name="hibernate
Properties">
<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.hibernate
sample;
import java.util.List;
import org.hibernate
.CacheMode;
import org.hibernate
.Criteria;
import org.hibernate
.Query;
import org.hibernate
.Session;
import cn.rmic.hibernate
sample.hibernate
.Hibernate
SessionFactory;
import cn.rmic.manager.po.Resources;
public class testCacheSelectList ...{
/** *//**
* @param args
*/
public static void main(String[] args) ...{
// TODO Auto-generated method stub
Session s=Hibernate
SessionFactory.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());
Hibernate
SessionFactory.closeSession();
try ...{
Thread.sleep(5000);
} catch (InterruptedException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
s=Hibernate
SessionFactory.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());
Hibernate
SessionFactory.closeSession();
}
}
分享到:
相关推荐
Hibernate+ehcache二级缓存技术 Hibernate+ehcache二级缓存技术
2. **配置Hibernate**:在`hibernate.cfg.xml`中启用二级缓存,并指定Ehcache为缓存提供者: ```xml <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory ...
- 第二级缓存:SessionFactory实例间的共享缓存,跨Session存储数据,提高多个并发请求的效率。 4. **缓存更新与失效** - 更新策略:当数据发生变化时,需要同步更新缓存,可以使用`@CacheEvict`注解实现缓存的...
Hibernate+Ehcache 二级缓存配置: 1. 附加 ehcache-1.2.3.jar 和 commons-logging.jar 到项目中。并在项目 src 目录下建立一个名称为 ehcache.xml 的文件。 ehcache.xml 文件内容: ``` <ehcache> ...
Hibernate EhCache 二级缓存配置 Hibernate EhCache 二级缓存配置是 Hibernate 框架中的一种缓存机制,它可以提高应用程序的性能和效率。下面是关于 Hibernate EhCache 二级缓存配置的详细知识点: 一、简介 ...
一级缓存是每个 Hibernate Session 的私有缓存,而二级缓存则可以跨 Session 共享,Ehcache 就是常见的二级缓存实现。 7. **事务管理**:在整合 Hibernate 和 Ehcache 时,必须注意事务管理,确保缓存与数据库的...
Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的直接访问。当相同的数据再次被请求时,可以从缓存中快速获取,提高系统响应速度。在不使用缓存的情况下,可以通过配置关闭。 5...
- 在Hibernate配置文件(如`hibernate.cfg.xml`)中启用二级缓存并指定Ehcache为缓存提供者。 - 配置Ehcache的XML配置文件,定义缓存区域、大小、过期策略等。 - 在实体类或映射文件中启用缓存,并指定缓存策略。 4...
Ehcache作为二级缓存被集成到Hibernate中,可以通过设置`<property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>`来启用。 3. **Ehcache配置**:`ehcache.xml`文件...
以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml <property name="hibernate.cache.use_...
`caching`和`Hibernate+ehcache二级缓存配置 - 王贵伟 - JavaEye技术网站.files`、`spring中配置二级缓存.files`这些目录可能包含了相关配置文件和资源。 总的来说,Spring二级缓存通过集成EhCache,实现了跨会话的...
2. 配置`hibernate.cfg.xml`以启用二级缓存并指定Ehcache配置文件。 3. 在实体类或映射文件中定义缓存策略,例如使用`@Cacheable`、`@Cache`等注解。 4. 编写测试代码,验证缓存的效果,如查询数据的速度提升,重复...
3. **集成Ehcache与Hibernate**:在Hibernate中配置Ehcache作为二级缓存,可以将频繁查询的数据保存在内存中,避免重复的数据库调用。这涉及到修改Hibernate配置文件(如`hibernate.cfg.xml`),添加Ehcache的相关...
本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...
例如,为了使用Ehcache,需要在Spring配置文件中添加Ehcache的相关bean,然后在Hibernate的SessionFactory配置中启用二级缓存。此外,还需要在Struts的Action中调用由Spring管理的业务服务,这些服务通常会利用...
### 配置EhCache二级缓存 #### 一、简介 EhCache是一个高性能、易于使用的开源缓存系统,最初由 Terracotta 组织开发。它支持多种缓存模型,包括本地缓存和分布式缓存。由于其简单易用且功能强大,EhCache 成为了 ...
2. **配置Hibernate**:在Hibernate的配置文件`hibernate.cfg.xml`中启用二级缓存并指定缓存提供商。以下是一个使用Ehcache的示例: ```xml <property name="hibernate.cache.use_second_level_cache">true ...
在这个"Ehcache二级缓存.zip"压缩包中,可能包含了实现Ehcache二级缓存的相关文件,如jar包、配置文件和文档等。 1. **Ehcache二级缓存**:在Java应用中,一级缓存通常指的是JVM内的内存缓存,而二级缓存则可以是...
在Spring Boot项目中配置Redis作为Hibernate的二级缓存,我们需要以下步骤: 1. **添加依赖**: 首先,在`pom.xml`文件中添加Spring Boot的JPA、Hibernate和Redis相关依赖,如: ```xml <groupId>org.spring...
ehcache 二级缓存 配置使用的jar包 配置如下: <!-- 启用二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true <!-- 查询的二级缓存配置 --> <property name="hibernate....