`
tianhei
  • 浏览: 210383 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate 缓存设计

阅读更多

缓存设计原理:

第一次查询的时候需要查询数据库,把查询的结果放到一个Map中。

第二次查询的时候直接查Map,如果Map中有此数据,就直接用此数据,如果没有再放到Map中。

 

Hibernate的缓存分为两级:

一级缓存是Session级别的缓存。

二级缓存是SessionFactory级别的缓存。

 

 

一、一级缓存(Session级别):

 

一级缓存默认是开启的。

一级缓存在Session关闭的时候就会消失,在Session还没关闭之前一级缓存默认存在。

即:作用范围在Session开启和关闭之间。范围很小。

Session的save,update,saveOrUpdate,load,get,list,iterate,lock这些方法都会把对象放在一级缓存中。一级缓存不能控制缓存的数量,所以当大批量操作数据时可能会造成内存溢出。可以使用session.evict(object),session.clear()方法清除缓存中的内容。

Query,Criteria这两个接口查询数据时,不会使用一级缓存。

 

 

二、二级缓存(SessionFactory):

 

Hibernate将二级缓存交给了第三方来开发。

二级缓存生命周期长。

二级缓存需要在Hibernate的配置文件中来配置。

Session的save(不适合native生成主键),update,saveOrUpdate,list,iteraror,get,load,以及Query,Criteria都会填充二级缓存

 

1、设置是否需要打开二级缓存(默认为真):hibernate.cache.use_second_level_cache

值包括:

true

false

 

2、第三方缓存的提供者:hibernate.cache.provider_class

值包括:

org.hibernate.cache.EhCacheProvider
org.hibernate.cache.EmptyCacheProvider
org.hibernate.cache.HashtableCacheProvider
org.hibernate.cache.TreeCacheProvider
org.hibernate.cache.OSCacheProvider (较多使用)
org.hibernate.cache.SwarmCacheProvider

因为有了第三方缓存的提供者,因此在使用二级缓存时,Hibernate就可以不再去配置缓存的大小等等参数。可以由第三方缓存提供者通过配置文件来提供。

 

3、在Hibernate的配置文件中使用<class-cache class="" usage="">来配置对哪些类进行二级缓存。

 

4、Query二级缓存查询配置(默认是打开的):hibernate.cache.use_query_cache

值包括:

true

false

 

分享到:
评论

相关推荐

    Hibernate缓存深入详解

    【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的...因此,需要根据系统的特性和需求,进行合适的缓存设计和优化。

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

    并发访问策略是缓存设计的关键,特别是在二级缓存中。事务型策略提供了 Repeatable Read 隔离级别,适用于多读少写的场景,能防止脏读和不可重复读。读写型策略提供 Read Committed 隔离级别,适用于非集群环境,...

    Hibernate缓存

    7. 高并发web架构.pdf:这可能涉及如何在高并发场景下设计和优化Web应用,其中可能涵盖了Hibernate缓存在解决性能瓶颈中的作用。 8. 缓存技术浅谈.ppt:这是一个关于缓存技术的概述,可能包含了多种缓存策略和实现,...

    Hibernate的缓存策略

    在Hibernate框架中,一级缓存和二级缓存各自承担着不同的角色,通过合理的设计和配置,可以充分发挥缓存的优势,显著提升系统的性能和用户体验。在实际项目中,开发者应根据具体需求灵活运用这两种缓存机制,以达到...

    Hibernate缓存机制探讨

    在配置Hibernate缓存时,需要明确哪些实体或查询结果应该缓存,并设置相应的缓存策略。例如,我们可以使用`@Cacheable`注解标记实体类,使用`@Cache`注解来定义缓存区域和策略。同时,对于查询结果的缓存,可以使用`...

    hibernate二级缓存

    Hibernate 二级缓存是一种高效的数据存储机制,它能够显著...不过,需要注意的是,由于缓存可能会导致数据一致性问题,因此在设计缓存策略时,必须考虑到数据的实时性和一致性需求,确保缓存更新策略与业务逻辑相匹配。

    hibernate缓存策略

    ### Hibernate缓存策略详解 #### 一、理解Hibernate缓存 ##### 1.1 缓存概念 在软件开发领域,缓存技术是一项重要的优化手段,它可以显著提高应用程序的性能和响应速度。Hibernate作为一种持久层框架,其核心功能...

    hibernate的一级缓存和二级缓存

    《深入理解Hibernate的一级缓存与二级...但需要注意,缓存并非万能,过度依赖缓存可能会导致数据一致性问题,因此在设计缓存策略时,应综合考虑业务需求、数据更新频率等因素,以达到最佳性能和数据一致性之间的平衡。

    hibernate配置二三级缓存

    配置Hibernate缓存属性** 接下来,在`hibernate.cfg.xml`文件中启用二级缓存并指定缓存提供者。 ```xml &lt;hibernate-configuration&gt; &lt;!-- 数据库连接等配置省略 --&gt; &lt;property name="hibernate.cache.use_...

    Hibernate二级缓存技术

    – 设置Hibernate缓存提供者为EhCache –&gt; &lt;property name="cache.provider_class"&gt;org.hibernate.cache.EhCacheProvider &lt;!– 启用查询缓存 –&gt; &lt;property name="hibernate.cache.use_query_cache"&gt;true ``` 同时...

    hibernate 缓存详解

    **hibernate 缓存详解** 在Java的持久化框架Hibernate中,缓存是一个至关重要的概念,它极大地提升了数据访问的效率。缓存分为一级缓存和二级缓存,每级缓存都有其特定的作用和优化策略。 1. **一级缓存(Session ...

    Hibernate的cache缓存解析

    3. **缓存命中率优化**:通过合理的缓存设计和管理,提高缓存的命中率,从而进一步提升性能。 #### Hibernate缓存详解 Hibernate提供了两种级别的缓存:一级缓存和二级缓存。 - **一级缓存**:默认情况下,...

    hibernate缓存

    **标题**:“Hibernate缓存” **描述**: 缓存的概念是基于“最近最常使用”(LRU)原则,即经常被访问的数据会被缓存起来,以减少磁盘I/O操作和网络延迟。在Hibernate中,缓存主要分为一级缓存和二级缓存。一级...

    hibernate 缓存机制

    Hibernate的缓存机制是优化应用程序性能的关键组成部分,它通过存储数据...然而,需要注意的是,虽然缓存可以提高效率,但过度依赖缓存可能导致数据一致性问题,因此在设计时需要权衡缓存的使用和数据同步的复杂性。

    Hibernate缓存笔记

    ### Hibernate缓存深入解析 #### 缓存的重要性与工作原理 缓存技术是提升系统性能的关键手段之一,尤其是在处理大量数据访问的应用程序中。通过减少对底层数据存储系统的直接访问频率,缓存能够显著加快数据读取...

    Hibernate二级缓存

    **一、Hibernate缓存层次** Hibernate缓存主要分为一级缓存和二级缓存: 1. **一级缓存(Session级别)**:每个Hibernate Session都拥有自己的缓存,也称为事务级缓存。当对象被持久化时,会自动放入一级缓存,...

Global site tag (gtag.js) - Google Analytics