Hibernate缓存机制以及一级缓存和二级缓存的作用
2015-10-06 11:51
351 查看
java对象的属性(通常是一些集合类型的属性 )占用的内存空间。如果对象的占用的内存很大就称为重量级的对象。如果对象的内存小就称为轻量级的对象。
Session 的缓存被称为hibernate的第一级缓存。SessionFactory的外置缓存称为hibernate 的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。SessionFactory的内置缓存 存放元数据和预定义SQL,
SessionFactory的内置缓存是只读缓存。
Session 缓存的三大作用:
1,减少数据库的访问频率,提高访问性能。
2,保证缓存中的对象与数据库同步,位于缓存中的对象称为持久化对象。
3,当持久化对象之间存在关联时,Session 保证不出现对象图的死锁。
Session 如何判断持久化对象的状态的改变呢?
Session 加载对象后会为对象值类型的属性复制一份快照。当Session 清理缓存时,比较当前对象和它的快照就可以知道那些属性发生了变化。
Session 什么时候清理缓存?
1,commit() 方法被调用时
2,查询时会清理缓存,保证查询结果能反映对象的最新状态。
3,显示的调用session 的 flush方法。
session 清理缓存的特例:
当对象使用 native 生成器 时 会立刻清理缓存向数据库中插入记录。
Session 的缓存被称为hibernate的第一级缓存。SessionFactory的外置缓存称为hibernate 的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。SessionFactory的内置缓存 存放元数据和预定义SQL,
SessionFactory的内置缓存是只读缓存。
Session 缓存的三大作用:
1,减少数据库的访问频率,提高访问性能。
2,保证缓存中的对象与数据库同步,位于缓存中的对象称为持久化对象。
3,当持久化对象之间存在关联时,Session 保证不出现对象图的死锁。
Session 如何判断持久化对象的状态的改变呢?
Session 加载对象后会为对象值类型的属性复制一份快照。当Session 清理缓存时,比较当前对象和它的快照就可以知道那些属性发生了变化。
Session 什么时候清理缓存?
1,commit() 方法被调用时
2,查询时会清理缓存,保证查询结果能反映对象的最新状态。
3,显示的调用session 的 flush方法。
session 清理缓存的特例:
当对象使用 native 生成器 时 会立刻清理缓存向数据库中插入记录。
相关文章推荐
- Servlet的生命周期
- 日经春秋 20151006
- HTML-Html开发之Viewport的使用
- 无法找到元素 'util:list' 的声明
- hdu 1856 more is better
- 天声人語 20151006 空爆された病院
- POJ 题目3254 Corn Fields(状压DP)
- 栈的作用
- HASHTABLE, HashMap,TreeMap区别
- python3 操作Excel文件
- vector中的剥离现象
- 我写过的软件之OneWorld-大世界2
- String,StringBuffer, StringBuilder 的区别
- [leetcode279] perfect squares
- 登陆
- Delphi XE7 学习笔记 StopWatch类
- UICollectionView 以及 AWCollectionViewDialLayout
- go语言编辑器:liteide
- 四则运算
- ArrayList,LinkedList,Vestor区别