一级缓存也叫Session级缓存,hibernate在执行save,update,saveOrupdate,get,load,list,iterate,lock方法时,会将数据放入一级缓存中,一级缓存中的数据可以通过evict和clear方法清理,它也会随着session的生命的结束而结束,也就是说当session生命周期结束或者session被关闭时,一级缓存中的数据随之清除。
二级缓存也叫sessionFactory缓存,二级缓存需要配置,二级缓存交给了第三方进行处理,常见的二级缓存支持有EHCache,OSCache,Hashtable,由于一级缓存有限(内存有限,session生命周期有限),所以二级缓存是一级缓存的弥补,二级缓存的生命跟SessionFactory有关联,二级缓存在sessionFactory生命周期中存在,二级缓存可以在内存和磁盘中。
hibernate查询数据,先从一级缓存中找,如果一级缓存中存在,则返回数据,一级缓存中不存在,就从数据库中找,在数据库中找到后,将数据放入一级缓存,如果配置了二级缓存,则是先从一级缓存中找,如果一级缓存不存在,再从二级缓存中找,如果二级缓存存在,则返回数据,如果二级缓存中不存在,则从数据库中找,在数据库中找到后,将数据放入一级缓存和二级缓存。
二级缓存有一个统计数据命中率的方法,数据命中率越高越好。
二级缓存的OSCache.property文件配置capacity大小和缓存在内存还是磁盘。
hibernate_cache_second_level true
cache_privider_class org.hibernate.cache.OSCachePrivider
hibernate_generate_statictis true
mapping Student.hbm.xml
class-cache class Student usage read-only,read-write,nonstrict-read-write,transactional
OSCache.jar,log4j.jar,OSCache.propertiry
<hibernate-configuration> <session-factory> <!-- 开启二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true</property> <!-- 设置缓存提供者 --> <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <mapping resource="cn/ineeke/entity/User.hbm.xml"/> <!-- 指定哪些实体需要使用二级缓存 --> <class-cache class="cn.ineeke.entity.User" usage="read-only"/> </session-factory> </hibernate-configuration>
分享到:
相关推荐
本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...
Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...
**hibernate一级缓存详解** 在Java的持久化框架Hibernate中,一级缓存是其核心特性之一,它为提高数据库操作效率、减少对数据库的访问提供了重要支持。一级缓存,也称为session缓存,是每个Hibernate Session内部...
**hibernate二级缓存详解** Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,在处理大量数据时,性能优化显得尤为重要,这就是二级缓存的作用。本文将深入探讨Hibernate...
详细描述了,Hibernate中一级缓存和二组缓存的思想思路,以及使用方法,使用情况。
《Hibernate二级缓存配置详解》 在Java的持久化框架Hibernate中,缓存技术是提升系统性能的关键之一。本文将深入探讨Hibernate的二级缓存,包括其事务范围、进程范围和集群范围的配置,特别是关注进程范围内的...
1. **Hibernate二级缓存**:在默认情况下,Hibernate只使用一级缓存(Session级别的缓存),二级缓存则可由用户自定义配置。二级缓存是多个Session共享的,可以跨事务存储对象,提高了数据读取速度,减少了对数据库...
1. **Hibernate二级缓存**:二级缓存是Hibernate在一级缓存(Session级别的缓存)之外提供的全局共享缓存,可以跨Session共享数据。它允许多个并发用户访问相同的数据,减少对数据库的访问次数,提高系统性能。 2. ...
**hibernate二级缓存详解** 在Java的持久化框架Hibernate中,缓存是一种重要的优化手段,它能够显著提升数据库操作的效率。本项目提供的工程示例深入探讨了Hibernate的一级缓存和二级缓存机制,并通过实际运行验证...
主要介绍了Java的Hibernate框架中的缓存与二级缓存,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
【Hibernate二级缓存详解】 Hibernate二级缓存是一种可配置的插件,主要依赖于第三方产品,比如EHCache,用于提高数据库操作的效率。在数据库访问过程中,Hibernate的Session提供了默认的一级缓存,但一级缓存的...
### Hibernate二级缓存技术详解 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用与关系型数据库之间的交互。为了提高性能和减少数据库的访问频率,Hibernate 提供了一级缓存和二...
【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,从而提高了应用程序的运行速度。缓存中存储的是...
**Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...
Hibernate的缓存分为一级缓存和二级缓存。 ### 2. 一级缓存 一级缓存是SessionFactory级别的,每个SessionFactory实例都有自己的独立一级缓存。当你通过SessionFactory创建Session时,一级缓存就已经启动。在...