1 一级缓存是指session缓存,当同一个session查询相同数据时,可以直接去缓存中拿,但如果是不同session即使查询内容相同也得去重新查询数据库。
2 二级缓存是指sessionfactory缓存,可以跨越session存在,即使不同的session当查询相同内容可以直接从二级缓存中拿数据而不用去访问数据库。二级缓存需要借助外界工具。
2.1.
打开二级缓存的方法是在hibernate.cfg.xml中配置:
<property name="cache.use_second_levle_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
然后将ehcache的jar包和commons-logging包放入项目中。
2.2.
然后配置类,如果使用的是annotation的方式,则在@Entity下加上
@Cache(usage= CacheConcurrencyStrategy.READ_WRITE)
如果使用的是配置xml的方式,则在对应的hbm.xml中Class下配置
<cache usage="read-write"/>
Cache的属性有三个
usage="transactional|read-write|nonstrict-read-write|read-only" region="RegionName" include="all|non-lazy"
usage(必选)说明了缓存的策略: transactional、 read-write、 nonstrict-read-write或 read-only一般使用的是read-write
region(可选, 默认为类或者集合的名字(class or collection role name))指定第二级缓存的区域名(name of the second level cache region)
include(可选,默认为 all)non-lazy 当属性级延迟抓取打开2.3. 关于二级缓存的使用:load,iterator默认使用二级缓存,list默认往二级缓存中存数据,但查询的时候不适用二级缓存,如果希望查询的时候也使用缓存则可以使用“查询缓存” :使用的方法是在hibernate.cfg.xml中加入
<property name="cache.use_query_cache">true</property>
然后在query对象后加setCacheable(true)如:
List<Husband> list1 = (List<Husband>)session1.createQuery("from Husband").setCacheable(true).list();
分享到:
相关推荐
以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml <property name="hibernate.cache.use_...
在这个"hibernate二级缓存实例"中,我们将深入探讨二级缓存的原理、配置以及在实际项目中的应用。 首先,我们需要了解一级缓存和二级缓存的区别。一级缓存是Session级别的,每个Session都有自己的一级缓存,用于...
《Hibernate二级缓存配置详解》 在Java的持久化框架Hibernate中,缓存技术是提升系统性能的关键之一。本文将深入探讨Hibernate的二级缓存,包括其事务范围、进程范围和集群范围的配置,特别是关注进程范围内的...
Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...
二级缓存可以通过设置不同的并发访问策略来解决并发问题,如事务型、读写型或非严格读写型,以适应不同场景下的需求。 持久化层的缓存范围决定了缓存的生命周期和访问权限。事务范围的缓存最安全,但只限于当前事务...
以下是一个简单的二级缓存配置示例: ```xml <hibernate-configuration> <!-- 配置缓存插件 --> <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory ...
**hibernate二级缓存详解** Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,在处理大量数据时,性能优化显得尤为重要,这就是二级缓存的作用。本文将深入探讨Hibernate...
配置Ehcache作为二级缓存提供商,需要在Hibernate的配置文件中设置`hibernate.cache.provider_class`为`net.sf.hibernate.cache.EhCacheProvider`。如果启用查询缓存,还需添加`hibernate.cache.use_query_cache=...
- **配置复杂**:二级缓存需要在Hibernate配置文件中指定缓存提供商,并对实体类进行配置,以便它们能够参与缓存。 - **缓存策略**:二级缓存支持不同的缓存策略,如读写策略、只读策略、定时刷新策略等,可以根据...
本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...
Hibernate二级缓存是Java开发中使用Hibernate框架进行数据持久化时优化性能的一种重要技术。它在一级缓存(Session级别的缓存)的基础上,提供了一个全局的、跨会话的数据存储层,可以显著减少对数据库的访问,从而...
在Java企业级开发中,Spring和Hibernate是两个非常...3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,配置Hibernate SessionFactory,并注入二级缓存配置。以下是一个配置示例: ```xml ...
在Spring框架中管理SessionFactory时,可以在配置文件中添加相应的bean定义,指定数据源、Hibernate属性以及二级缓存的相关设置。例如,`hibernate.cache.use_query_cache`属性可以开启查询缓存,进一步优化性能。 ...
通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...
二级缓存是 Hibernate 缓存策略的一部分,它在应用程序的多个会话之间共享数据,进一步优化了数据库访问效率。 二级缓存分为以下关键知识点: 1. **一级缓存与二级缓存的区别**: - 一级缓存:每个 Hibernate ...
**二、Hibernate二级缓存** 二级缓存是SessionFactory级别的,跨越了多个Session,可以被多个线程共享。它通常由第三方插件如EhCache、Infinispan等提供。二级缓存分为以下几种类型: 1. **集合缓存**:用于存储...
在Hibernate配置文件`hibernate.cfg.xml`中,我们需要开启二级缓存并指定缓存提供者: ```xml <property name="hibernate.cache.use_second_level_cache">true <property name="hibernate.cache.region.factory_...
本篇将详细介绍Hibernate二级缓存的概念、作用以及所需jar包的作用。 一、Hibernate二级缓存概念 Hibernate的一级缓存是指Session级别的缓存,每个Session内部都有一个一级缓存,用于存储实体对象,当Session关闭时...
本篇文章将深入探讨Hibernate二级缓存的概念、工作原理以及如何在实际项目中设置和使用。 **一、二级缓存概念** 一级缓存是每个Hibernate Session内部的一个内存区域,用于存储Session期间的操作对象。当Session...
标题“hibernate二级缓存(包括注解方式)”指出了本文将探讨的是Hibernate框架中的二级缓存机制,并且会涉及使用注解的方式进行配置。Hibernate是一个流行的对象关系映射(ORM)框架,它允许开发者在Java应用中使用...