`

spring中配置hibernate二级缓存 .

阅读更多
1.打开二级缓存的配置——applicationContext.xml
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

<property name="hibernateProperties">

<props>

<!-- 设置方言 -->

<prop key="hibernate.dialect">

org.hibernate.dialect.MySQLDialect

</prop>

<!-- 格式化输出的sql语句(可选) -->

<prop key="hibernate.format_sql">

true

</prop>

<!-- 是否打印sql语句 -->

<prop key="hibernate.show_sql">

false

</prop> 

<!-- 配置二级缓存 -->

<prop key="hibernate.cache.use_second_level_cache">

true

</prop> 

<!-- 由于查询的缓存命中率很低,所以我们关掉查询时的二级缓存 -->

<prop key="hibernate.cache.use_query_cache">

false

</prop> 

<!-- 配置二级缓存的相应的类 -->

<prop key=" hibernate.cache.provider_class">

org.hibernate.cache.EhCacheProvider

</prop> 
</props>

</property>

<property name="mappingResources">

<list>

<value>bean/Person.hbm.xml</value>

</list>

</property>

</bean>

注意我标注的红色部分,这块就是配置二级缓存,具体解释有注释,在最后一个配置项中配置了二级缓存的类,这个类为外部类,所以要加入ehcache的jar包。

2.设置Ehcache默认的配置文件——ehcache.xml(放在类路径下,src目录下)
<?xml version="1.0" encoding="UTF-8"?>

<ehcache>

    <diskStore path="D:/cache"/>

    <defaultCache  maxElementsInMemory="1000"  eternal="false" overflowToDisk="true"

        timeToIdleSeconds="120"

        timeToLiveSeconds="180"

        diskPersistent="false"

        diskExpiryThreadIntervalSeconds="60"/>

<cache name="bean.Person" maxElementsInMemory="100" eternal="false"

    overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="600" diskPersistent="false"/>

</ehcache>
<!--下面是解释 -->

<!-- path定义缓存的对象默认存放到哪里 -->

<!--defaultCache节点为缺省的缓存策略 -->

<!--maxElementsInMemory为内存中最大允许存在的对象数量 -->

<!--eternal设置缓存中的对象是否永远不过期-->

<!--overflowToDisk 把溢出的对象存放到硬盘上 -->

<!--timeToIdleSeconds 指定缓存对象空闲多长时间就过期,过期的对象会被清除掉 -->

<!--timeToLiveSeconds指定缓存对象总的存活时间 -->

<!--diskPersistent 当jvm结束是是否持久化对象 -->

<!--diskExpiryThreadIntervalSeconds 指定专门用于清除过期对象的监听线程的轮询时间 -->

<!--cache中是定义一些特别的缓存,如果不进行cache的定义,那么就会采用默认的缓存技术,上面我是为这个类定义缓存 -->

注意我上面的配置文件,蓝色部分如果没有必要就不用配置。如果不配置,那么就采用的是默认的缓存技术(defaultCache中的配置),如果配置了就采用他自己的配置。

3.为需要缓存的类添加缓存配置——xxx.hbm.xml
<hibernate-mapping>

    <class name="bean.Person" table="employee" catalog="test">

    <!-- usage中配置缓存策略,当两个并发的事务可以对他同时读,但是如果一个事务对他写的话,另外一个事务就不能读 -->

    <!-- bean中定义实体类 -->

    <cache usage="read-write"  region="bean.Person"/>

        <id name="empid" type="java.lang.Integer">

            <column name="empid" />

            <generator class="identity" />

        </id>

注意我配置的红色部分,usage中配置的是缓存策略,read-write表示两个并发的事务可以同时对他读,但是如果一个事务对他写,另外一个事务就不能读。

4.学会了配置回来看看理论——什么是缓存
  缓存是数据库数据临时容器,它包含了库表数据的临时拷贝,位于数据库与数据访问层之间。ORM进行数据读取时,会根据其缓存管理策略,首先在内存中查询,如果在内存中发现所需数据(缓存命中),则直接以此数据错位查询结果加以利用,从而避免了数据库调用的性能开销。

    缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。

5.学会了配置回来看看理论——hibernate中的两个级别的缓存
Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。

6.学会了配置回来看看理论——缓存策略详解
1)Read-only

    只读。对于从来不会修改的数据,如参考数据,可以使用这种并发访问策略。

2)Nonstrict-read-write

    非严格读写。如果程序对并发访问下的数据同步要求不是非常严格,且数据更新操作频 率较低(几个小时以上),可以采用这种并发访问策略,获得较好的性能。

3)Read-write

    严格读写。提供了Read Committed事务隔离级别。仅仅在非集群的环境中适用。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读这类的并发问题。

4) Transactional

    事务。仅仅在托管环境中适用。它提供了Repeatable Read事务隔离级别。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读和不可重复读这类的并发
分享到:
评论

相关推荐

    Spring集成的Hibernate配置二级缓存

    本文将详细探讨如何在Spring集成的Hibernate环境中配置二级缓存,以及其背后的原理和实践。 首先,我们需要了解什么是二级缓存。在Hibernate中,一级缓存是每个Session内部的缓存,它自动管理实体的状态,当一个...

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

    3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,配置Hibernate SessionFactory,并注入二级缓存配置。以下是一个配置示例: ```xml &lt;bean id="sessionFactory" class="org.spring...

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

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

    Spring4+Hibernate4二级缓存实例源码

    本实例源码着重展示了如何在Spring4和Hibernate4中配置并使用二级缓存。 首先,我们需要理解什么是二级缓存。在Hibernate中,一级缓存是每个Session级别的,它存储了当前Session中所有持久化对象的副本,当Session...

    springmvc4+spring4+hibernate5.1.3+二级缓存ehcache+fastjson配置

    在本配置中,Hibernate版本为5.1.3,支持JPA规范,提供了二级缓存功能,提高了数据访问性能。 4. **二级缓存(Ehcache)**: Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的...

    spring二级缓存

    `caching`和`Hibernate+ehcache二级缓存配置 - 王贵伟 - JavaEye技术网站.files`、`spring中配置二级缓存.files`这些目录可能包含了相关配置文件和资源。 总的来说,Spring二级缓存通过集成EhCache,实现了跨会话的...

    hibernate二级缓存 SSH

    SSH(Struts2、Spring、Hibernate)是一种...通过部署到Tomcat服务器,初学者可以了解和学习如何在实际环境中配置和使用Hibernate二级缓存。这将是一个不错的实践项目,有助于理解SSH框架和Hibernate缓存的工作原理。

    第29讲--为Spring集成的Hibernate配置二级缓存

    在本讲中,我们将深入探讨如何为Spring整合的Hibernate配置二级缓存。二级缓存是Hibernate框架中的一个重要特性,它可以显著提升数据访问性能,通过在应用程序级别存储对象,减少了对数据库的直接访问次数。理解并...

    Hibernate二级缓存技术

    ### Hibernate二级缓存技术详解 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用与关系型数据库之间的交互。为了提高性能和减少数据库的访问频率,Hibernate 提供了一级缓存和二...

    hibernate配置二三级缓存

    下面将详细探讨如何在Hibernate中配置二级缓存,并简要介绍所谓的“三级缓存”。 #### 一、二级缓存配置 **1. 引入依赖库** 首先,需要确保项目中已经引入了相应的缓存实现库,如EhCache。在Maven项目的`pom.xml`...

    Ehcache二级缓存.zip

    在这个"Ehcache二级缓存.zip"压缩包中,可能包含了实现Ehcache二级缓存的相关文件,如jar包、配置文件和文档等。 1. **Ehcache二级缓存**:在Java应用中,一级缓存通常指的是JVM内的内存缓存,而二级缓存则可以是...

    Hibernate二级缓存+分页功能

    **一、Hibernate二级缓存** Hibernate一级缓存是指Session级别的缓存,它是默认开启的,每个Session都会维护一个对象缓存,用来存放该Session加载的实体对象。一级缓存的生命周期与Session相同,当Session关闭时,...

    spring小结之配置二级缓存!

    在这里,我们将以EhCache为例,介绍如何在Spring中配置二级缓存。 1. 引入依赖:在项目中,我们需要添加EhCache的依赖,通常是在`pom.xml`或`build.gradle`文件中。确保包含EhCache的核心库和Spring对EhCache的支持...

    Hibernate4二级缓存Ehcache案例

    通过以上步骤,我们就成功地在Hibernate4中配置并启用了Ehcache作为二级缓存。在实际应用中,还需要根据业务需求调整缓存策略,比如调整缓存大小、过期时间等,以达到最佳的性能效果。 在“Hibernate4二级缓存...

    详解spring boot集成ehcache 2.x 用于hibernate二级缓存

    "Spring Boot 集成 Ehcache 2.x 用于 Hibernate 二级缓存" 本篇文章主要介绍了如何在 ...本文主要介绍了如何在 Spring Boot 中集成 Ehcache 2.x 作为 Hibernate 的二级缓存,提供了一份详细的配置示例,供读者参考。

    memcache也spring,hibernate的配置

    - 在Hibernate配置中指定使用hibernate-memcached作为二级缓存。 - 如果单独使用Spring,需要配置Spring的缓存管理器,并关联xmemcache-spring的相关配置。 - 在需要缓存的方法上使用Spring的缓存注解。 8. **...

    struts2spring3hibernate3.3框架包.

    同时,Hibernate3.3引入了二级缓存机制,提高了数据读取效率。 这三个框架的集成使用,通常称为SSH框架,可以实现业务逻辑、数据持久化和用户交互的高效协同。Spring3作为核心,管理Struts2和Hibernate的实例,控制...

    spring-boot-starter-data-jpa 的二级缓存

    3. Spring Boot配置:在resources目录中创建hibernate.properties配置文件,设置相关属性,例如是否格式化SQL语句,以及是否启用二级缓存。 4. 实现二级缓存的策略:在Java代码中,需要正确地配置实体类和存储库...

    SSH框架网上商城项目第16战之Hibernate二级缓存处理首页热门显示

    在Hibernate4.3中,配置二级缓存需要引入相关的jar包,例如官方发布的hibernate-release-4.3.11.Final中包含的ehcache库。在`hibernate.cfg.xml`配置文件中,我们需要设置二级缓存的提供者为`EhCacheRegionFactory`...

Global site tag (gtag.js) - Google Analytics