`

hibernate开启缓存的问题

阅读更多

项目构架: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语句的需要开启缓存,默认是不使用缓存的,这点要注意。

分享到:
评论

相关推荐

    hibernate开启二级缓存和查询缓存

    对于更新频繁的数据,仅开启一级缓存,避免数据同步问题。 通过以上内容,我们可以了解到 Hibernate 的二级缓存和查询缓存机制,以及如何在实际应用中配置和使用它们。合理利用这些缓存技术,能有效提升应用程序的...

    Hibernate缓存深入详解

    一级缓存是Hibernate默认开启且无法关闭的。它是一个事务范围的缓存,与Session的生命周期绑定。当一个Session被创建时,一级缓存也随之创建,并在Session关闭时销毁。一级缓存中存储的对象是持久化对象,当对象的...

    Hibernate缓存深入详解 from ITEye

    **Hibernate缓存深入详解** ...总结,理解并熟练运用Hibernate的缓存机制,能够有效提升Java应用的性能,同时要时刻关注数据一致性问题,以确保系统的稳定运行。在实践中不断探索和优化,才能更好地发挥缓存的优势。

    Hibernate缓存,性能优化

    在IT领域,尤其是在Java开发中,Hibernate作为一款流行的开源对象关系映射(ORM)框架,其缓存机制是实现高性能数据库交互的关键技术之一。本文将深入探讨Hibernate缓存的原理、类型及其对性能优化的影响。 ### ...

    hibernate一级缓存和二级缓存的区别与联系

    一级缓存是 Hibernate 内置的,默认开启,与 Session 对象关联。它是一个事务范围的缓存,也就是说,每个 Hibernate Session 对应一个一级缓存,仅在当前事务中有效。一级缓存主要存储了 Session 在当前事务中加载和...

    Hibernate二级缓存

    1. **开启查询缓存**:在配置文件中开启查询缓存支持,并在查询时设置`setCacheable(true)`。 2. **编写测试代码**:例如,在测试代码中,当执行两次相同的查询时,第二次查询将直接从查询缓存中获取结果,而不是...

    Spring集成的Hibernate配置二级缓存

    因此,在实际应用中,需要根据业务场景谨慎选择缓存策略,避免出现脏数据问题。此外,对于大量并发操作的情况,还需考虑锁策略和缓存更新同步,以保证数据的一致性。 总之,合理利用Hibernate的二级缓存机制,结合...

    hibernate的缓存机制

    一级缓存默认开启,且生命周期与Session相同,关闭Session时,一级缓存中的数据将被清除。 **二级缓存**: 二级缓存是可选的,它是跨Session共享的。它允许在多个Session之间共享数据,从而减少对数据库的访问。二...

    hibernate的缓存机制和session对象的产生方式案例

    在Java的持久化框架Hibernate中,缓存机制和Session对象的管理是其高效运作的关键要素。本文将深入探讨这两个主题,以帮助开发者更好地理解和利用Hibernate。 首先,让我们聚焦于Hibernate的缓存机制。缓存的存在是...

    hibernate 二级缓存详解

    Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...

    hibernate缓存ehcache用法

    一级缓存是每个Session内的缓存,它是默认开启的,负责管理当前Session中的对象状态。而二级缓存则是可选的,可以跨多个Session共享,提高了数据的复用性。 Ehcache作为二级缓存提供商,提供了高效的缓存服务。要...

    hibernate缓存的问题

    一级缓存是 Hibernate Session 内部的缓存,它是默认开启且不可卸载的,主要用于保持 Session 内部数据状态同步。由于 Session 生命周期较短,一级缓存的命中率不高,对系统性能提升有限。二级缓存则是...

    hibernate二级缓存

    例如,`hibernate.cache.use_query_cache`属性可以开启查询缓存,进一步优化性能。 总的来说,Hibernate的二级缓存是优化数据库访问的关键工具,通过合理配置和使用,能够显著提升应用的响应速度和并发处理能力。...

    Hibernate的缓存机制

    Session的缓存是Hibernate中的一级缓存,它是内置的且不能被卸载,这意味着只要一个Session还处于打开状态,其缓存就一直有效。第一级缓存的生命周期与Session绑定,当Session关闭时,该缓存也随之失效。第一级缓存...

    Hibernate的缓存应用

    ### Hibernate的缓存应用 #### 一、概述 在现代软件开发中,为了提升系统性能与响应速度,缓存技术的应用越来越广泛。其中,Hibernate作为Java领域内一款优秀的对象关系映射(ORM)框架,其缓存机制尤其受到开发者...

    hibernate一级缓存

    3. **合理划分Session边界**:尽量减少长时间开启的Session,避免大量对象堆积在一级缓存中。 4. **避免跨Session操作**:尽量在一个Session内完成对某一对象的全部操作,以充分利用一级缓存的优势。 ### 源码分析...

    hibernate二级缓存(包括注解方式)

    在实体类上使用`@Cacheable`、`@Cache`等注解,可以方便地为特定实体开启二级缓存支持。例如: ```java @Entity @Cacheable @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class YourEntity { // ....

    Hibernate缓存与spring事务详解

    **标题:“Hibernate缓存与Spring事务详解”** 在IT领域,尤其是Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切...

Global site tag (gtag.js) - Google Analytics