`
wangcheng2008china
  • 浏览: 15166 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hibernate 二级缓存配置

阅读更多
1.配置hbm.xml

在class节点下面添加 <cache usage="read-write"/>(读写) 或者  <cache usage="read-only"/>(只读)

如:
<class name="com.hxy.portal.poststext.JforumPostsText" table="jforum_posts_text" catalog="jforum_bbs">
  <cache usage="read-write"/>
  <id name="postId" type="java.lang.Integer">
      <column name="post_id" />
      <generator class="identity" />
  </id>
  <property name="postText" type="java.lang.String">
      <column name="post_text" length="65535" />
  </property>
  .....
       </class>

2.配置spring文件
//打开hibernate二级缓存
hibernate.cache.use_sencond_levl_cache=true
//设置缓存加载类
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
//设置查询缓存
hibernate.cache.use_query_cache=true

具体配置:

<bean id="sf_id"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
 
  <property name="hibernateProperties">
   <value>
   <!-- 配置hibernate属性 如第一个方言等-->
      <!--
    1.hibernate.dialect Hibernate SQL方言  表示连接那种数据库
    2.hibernate.query.substitutions
     你可以使用hibernate.query.substitutions定义新的Hibernate查询短语。比如说:
   hibernate.query.substitutions true 1, false 0
    这个配置意思是当你在Hibernate里面输入true的时候,Hibernate会转化为1插入数据库,
    当你在Hibernate里面输入false的时候,Hibernate会转化为0插入数据库,后面的Y,N同理。
    对于某些数据库,例如Oracle来说,没有boolean数据类型,就是采用1代表true,0代表false,
    因此使用这个配置在Hibernate里面直接用true/false会非常直观。
   hibernate.query.substitutions toLowercase=LOWER
    这可以让你重新命名SQL的LOWER函数。
    3.hibernate.jdbc.batch_size 一个非零值,会开启Hibernate使用JDBC2的批量更新功能取值. 建议值在 5 和 30之间。
    4.hibernate.cache.provider_class 指定一个自定义的CacheProvider缓存提供者的类名.取值. classname.of.CacheProvider
    5.hibernate.cache.provider_configuration_file_resource_path hibernate缓存文件路径
        
         6.hibernate.cache.use_sencond_levl_cache打开hibernate二级缓存
         7.update如果数据库中不存在表则生成,存在如果有增加自动增加,开发使用update,生产一般不设置
        
          -->

   hibernate.hbm2ddl.auto
   hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
   hibernate.query.substitutions=true 1, false 0
   hibernate.jdbc.batch_size=20
   hibernate.hbm2ddl.auto=update
   hibernate.show_sql=true
   
   hibernate.cache.use_sencond_levl_cache=true
   hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
   hibernate.cache.use_query_cache=true
   </value>
   <!-- hibernate.cache.provider_configuration_file_resource_path
    指定缓存文件路径和文件名
    -->
  </property>
  
  <!-- hibernate配置文件所在地 便于spring加载hibernate配置文件 -->
  <property name="mappingDirectoryLocations">
    <list>
     <value>classpath:/com/hxy/portal/hibernate</value>
    </list>
  </property>  
 </bean>



3.编写ehcache.xml 配置文件

 <ehcache>
 <!--  maxElementsInMemory="10000" 缓存中最大允许创建的对象数 -->
 <!-- eternal="false" 缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期 -->
 <!-- timeToIdleSeconds="120" 缓存数据钝化时间(设置对象在它过期之前的空闲时间) -->             
 <!--  timeToLiveSeconds="120" 缓存数据的生存时间(设置对象在它过期之前的生存时间) -->
 <!--  overflowToDisk="true" 内存不足时,是否启用磁盘缓存 -->
     
     <diskStore path="c:\\ehcache\"/>      
     <defaultCache      
  maxElementsInMemory="10000"      
  eternal="false"      
  timeToIdleSeconds="120"      
  timeToLiveSeconds="120"      
  overflowToDisk="true"         
  />      
 </ehcache> 

4.使用查询方法
  /****
   * 根据hql查询List
   */
  public List findCacheListByHql(final String hql) {
   // TODO Auto-generated method stub
   return this.getHibernateTemplate().executeFind(new HibernateCallback(){    
    public Object doInHibernate(Session session)
      throws HibernateException, SQLException {
     // TODO Auto-generated method stub
     Query queryObject = session.createQuery(hql);
     //设置是否启用缓存
     queryObject.setCacheable(true);
     if(getHibernateTemplate().getQueryCacheRegion() != null){
      queryObject.setCacheRegion(getHibernateTemplate().getQueryCacheRegion());
     }
     return queryObject.list();
    }
   });
  }

5.缓存仅仅对hql查询生效,如果使用sql更变数据库数据,缓存数据将不会修改,只用使用hql操作数据库才能同步修改缓存数据。

如有疑问,欢迎加入群:283948248 找群主
0
1
分享到:
评论

相关推荐

    Spring集成的Hibernate配置二级缓存

    以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml &lt;property name="hibernate.cache.use_...

    hibernate二级缓存实例

    在这个"hibernate二级缓存实例"中,我们将深入探讨二级缓存的原理、配置以及在实际项目中的应用。 首先,我们需要了解一级缓存和二级缓存的区别。一级缓存是Session级别的,每个Session都有自己的一级缓存,用于...

    Hibernate二级缓存配置详解

    《Hibernate二级缓存配置详解》 在Java的持久化框架Hibernate中,缓存技术是提升系统性能的关键之一。本文将深入探讨Hibernate的二级缓存,包括其事务范围、进程范围和集群范围的配置,特别是关注进程范围内的...

    Hibernate二级缓存

    Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...

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

    二级缓存可以通过设置不同的并发访问策略来解决并发问题,如事务型、读写型或非严格读写型,以适应不同场景下的需求。 持久化层的缓存范围决定了缓存的生命周期和访问权限。事务范围的缓存最安全,但只限于当前事务...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    以下是一个简单的二级缓存配置示例: ```xml &lt;hibernate-configuration&gt; &lt;!-- 配置缓存插件 --&gt; &lt;property name="hibernate.cache.region.factory_class"&gt;org.hibernate.cache.ehcache.EhCacheRegionFactory ...

    hibernate二级缓存示例源码

    **hibernate二级缓存详解** Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,在处理大量数据时,性能优化显得尤为重要,这就是二级缓存的作用。本文将深入探讨Hibernate...

    hibernate 二级缓存详解

    配置Ehcache作为二级缓存提供商,需要在Hibernate的配置文件中设置`hibernate.cache.provider_class`为`net.sf.hibernate.cache.EhCacheProvider`。如果启用查询缓存,还需添加`hibernate.cache.use_query_cache=...

    hibernate一级缓存、二级缓存和查询缓存

    - **配置复杂**:二级缓存需要在Hibernate配置文件中指定缓存提供商,并对实体类进行配置,以便它们能够参与缓存。 - **缓存策略**:二级缓存支持不同的缓存策略,如读写策略、只读策略、定时刷新策略等,可以根据...

    hibernate一级和二级缓存配置与详解

    本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...

    hibernate二级缓存包

    Hibernate二级缓存是Java开发中使用Hibernate框架进行数据持久化时优化性能的一种重要技术。它在一级缓存(Session级别的缓存)的基础上,提供了一个全局的、跨会话的数据存储层,可以显著减少对数据库的访问,从而...

    为Spring集成的Hibernate配置二级缓存

    在Java企业级开发中,Spring和Hibernate是两个非常...3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,配置Hibernate SessionFactory,并注入二级缓存配置。以下是一个配置示例: ```xml ...

    hibernate二级缓存

    在Spring框架中管理SessionFactory时,可以在配置文件中添加相应的bean定义,指定数据源、Hibernate属性以及二级缓存的相关设置。例如,`hibernate.cache.use_query_cache`属性可以开启查询缓存,进一步优化性能。 ...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...

    hibernate二级缓存java包下载

    二级缓存是 Hibernate 缓存策略的一部分,它在应用程序的多个会话之间共享数据,进一步优化了数据库访问效率。 二级缓存分为以下关键知识点: 1. **一级缓存与二级缓存的区别**: - 一级缓存:每个 Hibernate ...

    Hibernate一级缓存和二级缓存

    **二、Hibernate二级缓存** 二级缓存是SessionFactory级别的,跨越了多个Session,可以被多个线程共享。它通常由第三方插件如EhCache、Infinispan等提供。二级缓存分为以下几种类型: 1. **集合缓存**:用于存储...

    Hibernate 二级缓存 总结整理

    在Hibernate配置文件`hibernate.cfg.xml`中,我们需要开启二级缓存并指定缓存提供者: ```xml &lt;property name="hibernate.cache.use_second_level_cache"&gt;true &lt;property name="hibernate.cache.region.factory_...

    hibernate二级缓存所需要的 jar包

    本篇将详细介绍Hibernate二级缓存的概念、作用以及所需jar包的作用。 一、Hibernate二级缓存概念 Hibernate的一级缓存是指Session级别的缓存,每个Session内部都有一个一级缓存,用于存储实体对象,当Session关闭时...

    hibernate 二级缓存

    本篇文章将深入探讨Hibernate二级缓存的概念、工作原理以及如何在实际项目中设置和使用。 **一、二级缓存概念** 一级缓存是每个Hibernate Session内部的一个内存区域,用于存储Session期间的操作对象。当Session...

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

    标题“hibernate二级缓存(包括注解方式)”指出了本文将探讨的是Hibernate框架中的二级缓存机制,并且会涉及使用注解的方式进行配置。Hibernate是一个流行的对象关系映射(ORM)框架,它允许开发者在Java应用中使用...

Global site tag (gtag.js) - Google Analytics