hibernate的缓存详解:
1 缓存的概念,以及用途
1) 缓存:(hibernate单独用来保存数据,开辟一块内存)
缓存就是数据库中的数据在内存中的临时的容器,包含
了数据库表中的数据,位于数据库和访问层之间
2)缓存优点: hibernate做查询的时候,首先去缓存中
查询要找的数据,有直接使用,没有再发sql语句去数据库
中真实查询
把用户经常访问的数据,放入缓存当中,这样每次
就不需要去数据库中访问这些常用信息,可以提高系统的
性能。
3)缓存的分类:
a) 一级缓存
b) 二级缓存
c) 查询缓存
2 一级缓存
1)内部结构:一级缓存的内部结构就是一个map<id,object>
map的key就是id,map的value就是实体对象,该结构
导致一级缓存不能缓存属性
2)一级缓存的生命周期:
一级缓存的生命周期与session有关,session创建并
维护一级缓存,session关闭,一级缓存销毁
3)hibernate中API使用缓存:
a) 可以读写一级缓存的: get , load,Iterate
b) 可以写入一级缓存的: save ,list
4)hibernate一级缓存无法禁用:
5)一级缓存的管理:session管理一级缓存(把一级缓存
数据清空clear)
3 二级缓存
1)二级缓存也叫进程级缓存或SessionFactory级缓存,
二级缓存可以让所有的session所共享
2)二级缓存的生命周期跟SessionFactory一致,
SessionFactory管理二级缓存
3)二级缓存的结构是Hashtable,只能保持实体对象,
不能保存属性,开发当中需要使用第3方提供的缓存组件
4)ehcache.xml
//在该二级缓存中,最多可以缓存对象的数量
maxElementsInMemory="1000"
//缓存在二级缓存中的对象是否永远都有效,一般配置为false
eternal="true"
//"钝化":两次访问该二级缓存中对象的,间隔时间
timeToIdleSeconds="120"
//二级缓存中的对象从创建到消亡的时间
timeToLiveSeconds="120"
//如果超过缓存的访问,可以写入到硬盘上的
overflowToDisk="true"
5)如何使用二级缓存
a)导入第3方ehcache-1.2.3.jar
b)导入ehcache.xml 配置文件,放入src目录下
c)修改hibernate.cfg.xml
(一)指明二级缓存的提供商
<!-- 指明二级缓存的提供商 -->
<property name="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
(二)开启二级缓存
<!-- 是否开启二级缓存,true开启二级缓存,false关闭二级缓存 -->
<property name="cache.use_second_level_cache">true</property>
d)指明那个对象放入二级缓存中
<!-- 指定把那个对象放入二级缓存当中 -->
<class-cache class="com.tarena.po.Student" usage="read-only"/>
6) 使用二级缓存
能够读写二级缓存: get load iterate
能够写入而不能读取二级缓存: list
7) 二级缓存的管理
使用SessionFactory来管理我们的二级缓存
首先修改HibernateUtil,添加获得SessionFactory的方法
SessionFactory factory = HibernateUtil2.getSessionFactory();
//factory.evict(Student.class, 1):去掉二级缓存中
//id为1的student对象
//factory.evict(Student.class,1);
//factory.evict(Student.class):去掉二级缓存中所有的
//student对象
4 查询缓存
1)查询用来保存属性的,对实体对象的结果集只保存id
2)查询缓存的生命周期,只有当前的表发生改变,查询
缓存的生命周期结束
3)如何使用查询缓存:
a)修改hibernate.cfg.xml文件,开启查询缓存
<!-- 是否开启查询缓存,true开启查询缓存,false关闭查询缓存 -->
<property name="cache.use_query_cache">true</property>
b)在Query对象中必须手动开启查询缓存
相关推荐
**Hibernate缓存详解** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。为了提高数据访问性能,Hibernate引入了缓存机制,它可以减少对数据库的直接访问,从而提升应用的...
**hibernate 缓存详解** 在Java的持久化框架Hibernate中,缓存是一个至关重要的概念,它极大地提升了数据访问的效率。缓存分为一级缓存和二级缓存,每级缓存都有其特定的作用和优化策略。 1. **一级缓存(Session ...
hibernate 缓存 详解 一级缓存 二级缓存 应用
Hibernate缓存机制是Java开发中使用Hibernate框架进行数据库操作时非常关键的一个部分,它能够显著提升应用程序的性能。本文将详细解析Hibernate的一级缓存和二级缓存。 **一级缓存** 一级缓存是SessionFactory创建...
**Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...
关于hibernate缓存的一个ppt课件,60+幻灯片,有需要的可以看一下
Java Hibernate缓存深入详解
Hibernate缓存深入详解
很好的资料,里面详细的介绍了Hibernate的各级缓存
hibernate缓存深入详解
【Hibernate缓存详解】 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。其缓存机制是提升系统性能的关键所在。本篇将深入探讨Hibernate的缓存机制,包括一级缓存和二级...