Hibernate学习记录4 缓存机制
来源:互联网 发布:怎么把淘宝放到桌面 编辑:程序博客网 时间:2024/05/21 06:11
Hibernate缓存有两级:
一级缓存 session级别的缓存
概念
它属于事务范围的缓存。它只存在于Session的生命周期。程序调用save(),update(),saveorupdate()等方法及调用查询接口 list,filter,iterate时,如果session缓存没有相应的对像,就会自动加入到一级缓存里。
session关闭时,其管理的一级缓存也会被清除。
一级缓存不能进行配置,不能卸载。
一级缓存的内部结果就是map
方法
- session.evict() : 将某个对象从Session的一级缓存中清除
- session.clear(): 将一级缓存中的所有对象清除
二级缓存 SessionFactory级别的缓存
这一级别的缓存可以配置和更改,动态的加载和卸载,属于进程级缓存,可以让所有的session共享。
二级缓存的生命周期与SessionFactory一致,由SessionFactory管理二级缓存。
二级缓存是HashTable结构,只能保持实体对象,不能保存属性。
二级缓存默认是打开的。设置的方式是:
hibernate.cache.use_query_cache=true
或者在hibernate.cfg.xml设置
配置方式:
hibernate.cfg.xml
<!-- 指明二级缓存的提供商 --><property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property><!-- 是否开启二级缓存,true开启二级缓存,false关闭二级缓存 --><property name="cache.use_second_level_cache">true</property><!-- 指定把那个对象放入二级缓存当中 --><class-cache class="com.tarena.po.Student" usage="read-only"/>
ehcache.xml
//在该二级缓存中,最多可以缓存对象的数量maxElementsInMemory="1000" //缓存在二级缓存中的对象是否永远都有效,一般配置为falseeternal="true"//"钝化":两次访问该二级缓存中对象的,间隔时间timeToIdleSeconds="120"//二级缓存中的对象从创建到消亡的时间 timeToLiveSeconds="120"//如果超过缓存的访问,可以写入到硬盘上的overflowToDisk="true"
二级缓存的管理
使用SessionFactory来管理我们的二级缓存首先修改HibernateUtil,添加获得SessionFactory的方法SessionFactory factory = HibernateUtil2.getSessionFactory();factory.evict(Student.class,1);//去掉二级缓存中id为1的student对象factory.evict(Student.class);//去掉二级缓存中所有的student对象
缓存读取流程
Hibernate将第一次读取的内容放到缓存
如果数据库被其它程序修改,Hibernate这时读取的数据仍是缓存数据。(先从一级缓存读,如果没有则从二级缓存读)。
查询缓存
另外Hibernate为查询结果提供了一个查询缓存,依赖于第二级缓存。
查询用来保存属性的,对实体结果集只保存id
查询缓存的生命周期,只有当前表发生改变,查询缓存的生命周期结束
使用查询缓存
修改hibernate.cfg.xml文件,开启查询缓存<!-- 是否开启查询缓存,true开启查询缓存,false关闭查询缓存 --><property name="cache.use_query_cache">true</property>
在Query对象中必须手动开启查询缓存
createSQLQuery创建的SQLQuery对象query中设置query.setCacheMode(CacheMode.IGNORE);读取数据时,不和二级缓存交换数据,直接读取数据库
0 0
- Hibernate学习记录4 缓存机制
- hibernate缓存学习记录
- Hibernate学习---缓存机制
- Hibernate缓存机制学习笔记
- hibernate缓存机制(学习笔记)
- hibernate学习之五(hibernate的缓存机制)
- Hibernate 学习记录 4
- Hibernate主题4——缓存机制
- Hibernate缓存机制介绍
- Hibernate:缓存机制解析
- Hibernate:缓存机制解析
- Hibernate的缓存机制
- Hibernate的缓存机制
- Hibernate的缓存机制
- HIbernate缓存机制
- Hibernate的缓存机制
- hibernate的缓存机制
- Hibernate缓存机制
- CSS基础知识
- POJ 1038 Bugs Integrated, Inc. 状态压缩dp+3进制枚举
- 哈希表的构建方法
- fgetc,getc,getchar,fputc,putc,putchar总结
- JAVA实现链表的基本操作
- Hibernate学习记录4 缓存机制
- [已解决] 收到广播无法启动activity
- spring JPA 实体创建 分页排序 时间比较
- 博客第一天!
- 封装js发送http请求
- 去哪儿网-后台开发-一面
- ML的45问(3)——神经网络与感知器法则、反向传播算法
- SSL 2646_线段树练习题三_线段树
- 遗忘---近日零散知识点总结