缓存设计原理:
第一次查询的时候需要查询数据库,把查询的结果放到一个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缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的...因此,需要根据系统的特性和需求,进行合适的缓存设计和优化。
并发访问策略是缓存设计的关键,特别是在二级缓存中。事务型策略提供了 Repeatable Read 隔离级别,适用于多读少写的场景,能防止脏读和不可重复读。读写型策略提供 Read Committed 隔离级别,适用于非集群环境,...
7. 高并发web架构.pdf:这可能涉及如何在高并发场景下设计和优化Web应用,其中可能涵盖了Hibernate缓存在解决性能瓶颈中的作用。 8. 缓存技术浅谈.ppt:这是一个关于缓存技术的概述,可能包含了多种缓存策略和实现,...
在Hibernate框架中,一级缓存和二级缓存各自承担着不同的角色,通过合理的设计和配置,可以充分发挥缓存的优势,显著提升系统的性能和用户体验。在实际项目中,开发者应根据具体需求灵活运用这两种缓存机制,以达到...
在配置Hibernate缓存时,需要明确哪些实体或查询结果应该缓存,并设置相应的缓存策略。例如,我们可以使用`@Cacheable`注解标记实体类,使用`@Cache`注解来定义缓存区域和策略。同时,对于查询结果的缓存,可以使用`...
Hibernate 二级缓存是一种高效的数据存储机制,它能够显著...不过,需要注意的是,由于缓存可能会导致数据一致性问题,因此在设计缓存策略时,必须考虑到数据的实时性和一致性需求,确保缓存更新策略与业务逻辑相匹配。
### Hibernate缓存策略详解 #### 一、理解Hibernate缓存 ##### 1.1 缓存概念 在软件开发领域,缓存技术是一项重要的优化手段,它可以显著提高应用程序的性能和响应速度。Hibernate作为一种持久层框架,其核心功能...
《深入理解Hibernate的一级缓存与二级...但需要注意,缓存并非万能,过度依赖缓存可能会导致数据一致性问题,因此在设计缓存策略时,应综合考虑业务需求、数据更新频率等因素,以达到最佳性能和数据一致性之间的平衡。
配置Hibernate缓存属性** 接下来,在`hibernate.cfg.xml`文件中启用二级缓存并指定缓存提供者。 ```xml <hibernate-configuration> <!-- 数据库连接等配置省略 --> <property name="hibernate.cache.use_...
– 设置Hibernate缓存提供者为EhCache –> <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider <!– 启用查询缓存 –> <property name="hibernate.cache.use_query_cache">true ``` 同时...
**hibernate 缓存详解** 在Java的持久化框架Hibernate中,缓存是一个至关重要的概念,它极大地提升了数据访问的效率。缓存分为一级缓存和二级缓存,每级缓存都有其特定的作用和优化策略。 1. **一级缓存(Session ...
3. **缓存命中率优化**:通过合理的缓存设计和管理,提高缓存的命中率,从而进一步提升性能。 #### Hibernate缓存详解 Hibernate提供了两种级别的缓存:一级缓存和二级缓存。 - **一级缓存**:默认情况下,...
**标题**:“Hibernate缓存” **描述**: 缓存的概念是基于“最近最常使用”(LRU)原则,即经常被访问的数据会被缓存起来,以减少磁盘I/O操作和网络延迟。在Hibernate中,缓存主要分为一级缓存和二级缓存。一级...
Hibernate的缓存机制是优化应用程序性能的关键组成部分,它通过存储数据...然而,需要注意的是,虽然缓存可以提高效率,但过度依赖缓存可能导致数据一致性问题,因此在设计时需要权衡缓存的使用和数据同步的复杂性。
### Hibernate缓存深入解析 #### 缓存的重要性与工作原理 缓存技术是提升系统性能的关键手段之一,尤其是在处理大量数据访问的应用程序中。通过减少对底层数据存储系统的直接访问频率,缓存能够显著加快数据读取...
**一、Hibernate缓存层次** Hibernate缓存主要分为一级缓存和二级缓存: 1. **一级缓存(Session级别)**:每个Hibernate Session都拥有自己的缓存,也称为事务级缓存。当对象被持久化时,会自动放入一级缓存,...