项目构架:spring+hibernate+webwork
1:
配置spring的applicationContext-hibernate.xml文件
加入:
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
2:
在工程目录下建立 ehcache.xml hibernate的缓存配置文件,编译后位于classes目录下
ehcache.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"/>
<cache name="org.hibernate.cache.StandardQueryCache"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="200"
timeToLiveSeconds="500"
overflowToDisk="true"/>
<cache name ="org.hibernate.cache.UpdateTimestampsCache"
maxElementsInMemory ="5000"
eternal ="true"
overflowToDisk ="true"/>
</ehcache>
3:在hibernate生成的hbm.xml文件中,把要使用缓存的po对象,加入
<cache usage="read-only"/><!-- read-write -->
必须加在
<id name="pkid" type="java.lang.Integer">
主键id前面。
4:此时配置完成了,如果你使用getHibernateTemplate().find(hql)语句查询时候,默认还不是使用缓存
在find之前加入:getHibernateTemplate().setCacheQueries(true)才能正常使用你配置好的缓存
你查询的hql对象必须定义了使用缓存,也就是hbm文件存在<cache usage="read-only"/>这样的内容。
如果你使用getHibernateTemplate().load(id)方法查询,则不需要设置开启缓存了,该方法模式开启缓存。
自己写hql语句的需要开启缓存,默认是不使用缓存的,这点要注意。
分享到:
相关推荐
- **自动管理**:一级缓存是自动管理的,无需手动开启或关闭。 - **生命周期与Session相同**:一级缓存的生命周期与`Session`的生命周期一致,即`Session`关闭时,一级缓存也会被清空。 - **作用范围**:一级缓存仅...
对于更新频繁的数据,仅开启一级缓存,避免数据同步问题。 通过以上内容,我们可以了解到 Hibernate 的二级缓存和查询缓存机制,以及如何在实际应用中配置和使用它们。合理利用这些缓存技术,能有效提升应用程序的...
一级缓存是Hibernate默认开启且无法关闭的。它是一个事务范围的缓存,与Session的生命周期绑定。当一个Session被创建时,一级缓存也随之创建,并在Session关闭时销毁。一级缓存中存储的对象是持久化对象,当对象的...
**Hibernate缓存深入详解** ...总结,理解并熟练运用Hibernate的缓存机制,能够有效提升Java应用的性能,同时要时刻关注数据一致性问题,以确保系统的稳定运行。在实践中不断探索和优化,才能更好地发挥缓存的优势。
在IT领域,尤其是在Java开发中,Hibernate作为一款流行的开源对象关系映射(ORM)框架,其缓存机制是实现高性能数据库交互的关键技术之一。本文将深入探讨Hibernate缓存的原理、类型及其对性能优化的影响。 ### ...
一级缓存是 Hibernate 内置的,默认开启,与 Session 对象关联。它是一个事务范围的缓存,也就是说,每个 Hibernate Session 对应一个一级缓存,仅在当前事务中有效。一级缓存主要存储了 Session 在当前事务中加载和...
1. **开启查询缓存**:在配置文件中开启查询缓存支持,并在查询时设置`setCacheable(true)`。 2. **编写测试代码**:例如,在测试代码中,当执行两次相同的查询时,第二次查询将直接从查询缓存中获取结果,而不是...
因此,在实际应用中,需要根据业务场景谨慎选择缓存策略,避免出现脏数据问题。此外,对于大量并发操作的情况,还需考虑锁策略和缓存更新同步,以保证数据的一致性。 总之,合理利用Hibernate的二级缓存机制,结合...
一级缓存默认开启,且生命周期与Session相同,关闭Session时,一级缓存中的数据将被清除。 **二级缓存**: 二级缓存是可选的,它是跨Session共享的。它允许在多个Session之间共享数据,从而减少对数据库的访问。二...
在Java的持久化框架Hibernate中,缓存机制和Session对象的管理是其高效运作的关键要素。本文将深入探讨这两个主题,以帮助开发者更好地理解和利用Hibernate。 首先,让我们聚焦于Hibernate的缓存机制。缓存的存在是...
Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...
一级缓存是每个Session内的缓存,它是默认开启的,负责管理当前Session中的对象状态。而二级缓存则是可选的,可以跨多个Session共享,提高了数据的复用性。 Ehcache作为二级缓存提供商,提供了高效的缓存服务。要...
一级缓存是 Hibernate Session 内部的缓存,它是默认开启且不可卸载的,主要用于保持 Session 内部数据状态同步。由于 Session 生命周期较短,一级缓存的命中率不高,对系统性能提升有限。二级缓存则是...
Session的缓存是Hibernate中的一级缓存,它是内置的且不能被卸载,这意味着只要一个Session还处于打开状态,其缓存就一直有效。第一级缓存的生命周期与Session绑定,当Session关闭时,该缓存也随之失效。第一级缓存...
### Hibernate的缓存应用 #### 一、概述 在现代软件开发中,为了提升系统性能与响应速度,缓存技术的应用越来越广泛。其中,Hibernate作为Java领域内一款优秀的对象关系映射(ORM)框架,其缓存机制尤其受到开发者...
3. **合理划分Session边界**:尽量减少长时间开启的Session,避免大量对象堆积在一级缓存中。 4. **避免跨Session操作**:尽量在一个Session内完成对某一对象的全部操作,以充分利用一级缓存的优势。 ### 源码分析...
在实体类上使用`@Cacheable`、`@Cache`等注解,可以方便地为特定实体开启二级缓存支持。例如: ```java @Entity @Cacheable @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class YourEntity { // ....
**标题:“Hibernate缓存与Spring事务详解”** 在IT领域,尤其是Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切...