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环境中配置二级缓存,以及其背后的原理和实践。 首先,我们需要了解什么是二级缓存。在Hibernate中,一级缓存是每个Session内部的缓存,它自动管理实体的状态,当一个...
3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,配置Hibernate SessionFactory,并注入二级缓存配置。以下是一个配置示例: ```xml <bean id="sessionFactory" class="org.spring...
通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...
本实例源码着重展示了如何在Spring4和Hibernate4中配置并使用二级缓存。 首先,我们需要理解什么是二级缓存。在Hibernate中,一级缓存是每个Session级别的,它存储了当前Session中所有持久化对象的副本,当Session...
在本配置中,Hibernate版本为5.1.3,支持JPA规范,提供了二级缓存功能,提高了数据访问性能。 4. **二级缓存(Ehcache)**: Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的...
`caching`和`Hibernate+ehcache二级缓存配置 - 王贵伟 - JavaEye技术网站.files`、`spring中配置二级缓存.files`这些目录可能包含了相关配置文件和资源。 总的来说,Spring二级缓存通过集成EhCache,实现了跨会话的...
在Spring框架中管理SessionFactory时,可以在配置文件中添加相应的bean定义,指定数据源、Hibernate属性以及二级缓存的相关设置。例如,`hibernate.cache.use_query_cache`属性可以开启查询缓存,进一步优化性能。 ...
SSH(Struts2、Spring、Hibernate)是一种...通过部署到Tomcat服务器,初学者可以了解和学习如何在实际环境中配置和使用Hibernate二级缓存。这将是一个不错的实践项目,有助于理解SSH框架和Hibernate缓存的工作原理。
在本讲中,我们将深入探讨如何为Spring整合的Hibernate配置二级缓存。二级缓存是Hibernate框架中的一个重要特性,它可以显著提升数据访问性能,通过在应用程序级别存储对象,减少了对数据库的直接访问次数。理解并...
### Hibernate二级缓存技术详解 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用与关系型数据库之间的交互。为了提高性能和减少数据库的访问频率,Hibernate 提供了一级缓存和二...
下面将详细探讨如何在Hibernate中配置二级缓存,并简要介绍所谓的“三级缓存”。 #### 一、二级缓存配置 **1. 引入依赖库** 首先,需要确保项目中已经引入了相应的缓存实现库,如EhCache。在Maven项目的`pom.xml`...
在这个"Ehcache二级缓存.zip"压缩包中,可能包含了实现Ehcache二级缓存的相关文件,如jar包、配置文件和文档等。 1. **Ehcache二级缓存**:在Java应用中,一级缓存通常指的是JVM内的内存缓存,而二级缓存则可以是...
**一、Hibernate二级缓存** Hibernate一级缓存是指Session级别的缓存,它是默认开启的,每个Session都会维护一个对象缓存,用来存放该Session加载的实体对象。一级缓存的生命周期与Session相同,当Session关闭时,...
在这里,我们将以EhCache为例,介绍如何在Spring中配置二级缓存。 1. 引入依赖:在项目中,我们需要添加EhCache的依赖,通常是在`pom.xml`或`build.gradle`文件中。确保包含EhCache的核心库和Spring对EhCache的支持...
通过以上步骤,我们就成功地在Hibernate4中配置并启用了Ehcache作为二级缓存。在实际应用中,还需要根据业务需求调整缓存策略,比如调整缓存大小、过期时间等,以达到最佳的性能效果。 在“Hibernate4二级缓存...
"Spring Boot 集成 Ehcache 2.x 用于 Hibernate 二级缓存" 本篇文章主要介绍了如何在 ...本文主要介绍了如何在 Spring Boot 中集成 Ehcache 2.x 作为 Hibernate 的二级缓存,提供了一份详细的配置示例,供读者参考。
- 在Hibernate配置中指定使用hibernate-memcached作为二级缓存。 - 如果单独使用Spring,需要配置Spring的缓存管理器,并关联xmemcache-spring的相关配置。 - 在需要缓存的方法上使用Spring的缓存注解。 8. **...
同时,Hibernate3.3引入了二级缓存机制,提高了数据读取效率。 这三个框架的集成使用,通常称为SSH框架,可以实现业务逻辑、数据持久化和用户交互的高效协同。Spring3作为核心,管理Struts2和Hibernate的实例,控制...
3. Spring Boot配置:在resources目录中创建hibernate.properties配置文件,设置相关属性,例如是否格式化SQL语句,以及是否启用二级缓存。 4. 实现二级缓存的策略:在Java代码中,需要正确地配置实体类和存储库...
在Hibernate4.3中,配置二级缓存需要引入相关的jar包,例如官方发布的hibernate-release-4.3.11.Final中包含的ehcache库。在`hibernate.cfg.xml`配置文件中,我们需要设置二级缓存的提供者为`EhCacheRegionFactory`...