1、首先设置EhCache,建立配置文件ehcache.XML,默认的位置在class-path,可以放到你的src目录下:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir" />
<cache name="cache1"
maxElementsInMemory="10000"<!-- 缓存最大数目 -->
eternal="false" <!-- 缓存是否持久 -->
overflowToDisk="true" <!-- 是否保存到磁盘,当系统当机时-->
timeToIdleSeconds="300" <!-- 当缓存闲置n秒后销毁 -->
timeToLiveSeconds="500" <!-- 当缓存存活n秒后销毁-->
memoryStoreEvictionPolicy="LRU" <!-- 最近最少使用策略-->
/>
</ehcache>
2、在Hibernate配置文件中设置:
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">100</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.cache.use_second_level_cache">
true
</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<prop key="net.sf.ehcache.configurationResourceName">
classpath:ehcache.xml
</prop>
3、在Hbm文件中<class>首行下添加
<cache usage="read-only" region="cache1"/>
4使用spring模板时加
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="cacheQueries">
<value>true</value>
</property>
</bean>
如果不设置“查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置
hibernate.cache.use_query_cache true 才行
<prop key="hibernate.cache.use_query_cache">true</prop>
ehcache不支持transactional,其他三种可以支持。
read-only:无需修改, 那么就可以对其进行只读 缓存,注意,在此策略下,如果直接修改数据库,即使能够看到前台显示效果,但是将对象修改至cache中会报error,cache不会发生作用。另:删除记录会报错,因为不能在read-only模式的对象从cache中删除。
read-write:需要更新数据,那么使用读/写缓存 比较合适,前提:数据库不可以为serializable transaction isolation level(序列化事务隔离级别)
nonstrict-read-write:只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不常见),也不需要十分严格的事务隔离,那么比较适合使用非严格读/写缓存策略。
分享到:
相关推荐
Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的直接访问。当相同的数据再次被请求时,可以从缓存中快速获取,提高系统响应速度。在不使用缓存的情况下,可以通过配置关闭。 5...
【标题】:“Hibernate二级缓存(Ehcache)” 【正文】: Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作。然而,随着应用规模的扩大,性能优化变得至关重要,...
Hibernate的一级缓存、二级缓存和查询缓存共同构建了一个层次化的缓存体系,有效地缓解了数据库的压力,提升了应用的运行效率。理解并掌握这些缓存机制,对于优化Hibernate应用至关重要。在实践中,合理配置和管理...
通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...
本压缩包提供的资源应该包含了实现Hibernate二级缓存所需的关键组件和库文件。 一级缓存是Hibernate Session内的缓存,它是每个Session实例独有的,当Session关闭时,一级缓存中的数据也会被清除。而二级缓存则是一...
在这个项目中,"hibernate二级缓存 SSH" 的标题表明我们将探讨如何在SSH框架中实现Hibernate的二级缓存功能。Hibernate二级缓存是一个优化策略,它能提高数据访问性能,减少对数据库的直接访问。 首先,Struts2作为...
一级缓存是每个 Hibernate Session 的私有缓存,而二级缓存则可以跨 Session 共享,Ehcache 就是常见的二级缓存实现。 7. **事务管理**:在整合 Hibernate 和 Ehcache 时,必须注意事务管理,确保缓存与数据库的...
**一、Hibernate二级缓存** 二级缓存是Hibernate中的一个可选特性,用于存储那些频繁访问但不经常变化的数据。与一级缓存相比,二级缓存的大小更大,且可以跨进程或跨服务器共享。这样,当多个用户同时请求相同数据...
Hibernate二级缓存通过插件实现,其中Ehcache是最常用的二级缓存实现。 二级缓存的配置主要包括以下步骤: 1. 引入Ehcache依赖。 2. 配置hibernate.cfg.xml,启用二级缓存并指定Ehcache配置文件。 3. 在实体类上...
1. **引入依赖**:首先需要在项目的 Maven 或者 Gradle 构建文件中添加相应的二级缓存库依赖,如 Ehcache 或 Infinispan。 2. **配置**:在 Hibernate 的配置文件(如 hibernate.cfg.xml)中启用二级缓存,并指定...
Ehcache二级缓存允许将一级缓存中的数据溢出到二级缓存,当一级缓存空间不足或者数据被移除时,可以从二级缓存中恢复。这不仅扩展了缓存容量,还确保了数据的持久性。 2. **POM文件**:在描述中提到的"POM"是Maven...
Ehcache是Hibernate常用的二级缓存提供商,它是一款开源、高性能、轻量级的缓存解决方案。 配置Hibernate4的二级缓存主要涉及以下几个步骤: 1. **引入依赖**:首先,你需要在项目的pom.xml或build.gradle文件中...
**Hibernate二级缓存** Hibernate是Java开发中的一个流行对象关系映射框架,它提供了一级缓存和二级缓存。一级缓存是每个Session内的缓存,而二级缓存则可以在多个Session之间共享。Hibernate的二级缓存主要通过插件...
总之,Ehcache作为Hibernate的二级缓存,能够显著提升数据访问效率,减少数据库负载。通过合理的配置和使用,开发者可以构建出高效、稳定的Java应用。在实际项目中,根据业务场景选择合适的缓存策略,优化缓存区域,...
总结来说,为Spring集成的Hibernate配置二级缓存涉及到引入缓存提供者依赖、修改Hibernate和Spring配置文件、在实体类上添加缓存注解以及配置Ehcache的详细设置。通过这些步骤,我们可以有效地提高数据访问效率,...
### 二级缓存配置 ...通过对Hibernate二级缓存的详细配置与理解,我们可以更好地利用这一功能来优化系统的性能。合理地选择缓存策略,并结合实际应用场景进行调整,将有助于构建出高效稳定的软件系统。
1. EhCache:EhCache是Hibernate默认的二级缓存提供商,支持本地内存缓存和分布式缓存,可配置缓存策略,如定时刷新、大小限制等。 2. Guava Cache:Google的Guava库提供了缓存功能,可以集成到Hibernate中作为二级...
然后,我们需要在Hibernate的配置中启用二级缓存,并指定使用EhCache。在`hibernate.cfg.xml`文件中添加以下配置: ```xml <property name="hibernate.cache.use_second_level_cache">true <property name="...
- 第二级缓存:SessionFactory实例间的共享缓存,跨Session存储数据,提高多个并发请求的效率。 4. **缓存更新与失效** - 更新策略:当数据发生变化时,需要同步更新缓存,可以使用`@CacheEvict`注解实现缓存的...