Hibernate的缓存机制
2013-01-07 00:00
232 查看
一级缓存是Session级别的缓存,属于事务范围的缓存,由Hibernate管理,当我们使用Hibernate查询数据时,都会从一级缓存中查询数据,但是不会产生查询语句,另外一级缓存是线程范围的缓存,但线程结束时,Session就会关闭;而二级缓存是SessionFactory级别的缓存,属于进程范围的缓存,只要服务器不关,SessionFactory就永远存在。
SessionFactory级别的缓存又分为两类:内置缓存和外置缓存。
内置缓存:Hibernate自带的,不可卸载。通常在Hibernate初始化阶段,Hibernate会把映射元数据(什么是映射元数据?)和预定义的SQL语句放置到sessionFactory缓存中,映射元数据是映射文件中数据的复制,而预定义SQL语句是Hibernate根据映射元数据推到出来的,该内置缓存是只读的。
外置缓存:也就是我们所说的二级缓存。一个可配置的缓存插件,在默认情况下,sessionFactory不会启用这个插件,外置缓存中的数据是数据库中数据的复制,外置缓存的介质可以是硬盘或内存。
二级缓存的区域划分:
Class Cache Region:存放的是真实实体,也就是对象,但数据是以散装数据形式的存放的。
Collection Cache Region:用Set集合来存放缓存数据,只初始化Oid,真实数据还是存放在Class Cache Region。
Query Cache Region:使用Query接口查询;用Set集合来存放缓存数据,只初始化Oid,真实数据还是存放在Class Cache Region。
Update Timestamps:不作研究
适合放入到二级缓存中的数据:很少被修改或者不是特别重要,允许偶尔发生并发问题的数据;不适合放入到二级缓存中的数据:经常被修改,不允许存在并发问题的数据,比如财务数据;再有就是与其它应用数据共享的数据。
SessionFactory级别的缓存又分为两类:内置缓存和外置缓存。
内置缓存:Hibernate自带的,不可卸载。通常在Hibernate初始化阶段,Hibernate会把映射元数据(什么是映射元数据?)和预定义的SQL语句放置到sessionFactory缓存中,映射元数据是映射文件中数据的复制,而预定义SQL语句是Hibernate根据映射元数据推到出来的,该内置缓存是只读的。
外置缓存:也就是我们所说的二级缓存。一个可配置的缓存插件,在默认情况下,sessionFactory不会启用这个插件,外置缓存中的数据是数据库中数据的复制,外置缓存的介质可以是硬盘或内存。
二级缓存的区域划分:
Class Cache Region:存放的是真实实体,也就是对象,但数据是以散装数据形式的存放的。
Collection Cache Region:用Set集合来存放缓存数据,只初始化Oid,真实数据还是存放在Class Cache Region。
Query Cache Region:使用Query接口查询;用Set集合来存放缓存数据,只初始化Oid,真实数据还是存放在Class Cache Region。
Update Timestamps:不作研究
适合放入到二级缓存中的数据:很少被修改或者不是特别重要,允许偶尔发生并发问题的数据;不适合放入到二级缓存中的数据:经常被修改,不允许存在并发问题的数据,比如财务数据;再有就是与其它应用数据共享的数据。
相关文章推荐
- Hibernate——脏检查和缓存清理机制
- Hibernate的缓存机制
- Hibernate的缓存机制
- Hibernate的缓存机制
- Hibernate-缓存机制详解
- hibernate的缓存机制
- hibernate 缓存机制
- Hibernate中的缓存机制
- Hibernate 所有缓存机制详解
- hibernate的缓存机制详解
- hibernate的缓存机制(转自javaEye)
- Hibernate:缓存机制解析
- Hibernate学习---缓存机制
- Hibernate——脏检查和缓存清理机制
- Hibernate的缓存机制
- Hibernate的缓存机制介绍
- J2EE综合--分析Hibernate的缓存机制
- Hibernate 缓存机制
- Hibernate 的缓存机制
- 【Java EE (Struts2 + Spring + Hibernate)开发】 :Hibernate(二)之【数据过滤|事务控制|二级缓存和查询缓存|事件机制】