Hibernate的Session
来源:互联网 发布:知乎日耳曼和凯尔特 编辑:程序博客网 时间:2024/05/17 23:08
理解Session的缓存:
当session的save()方法持久化一个对象时,该对象被载入缓存,以后即使程序中不再引用该对象,只要缓存不清空,该对象仍然处于生命周期中。当试图load()对象时,会判断缓存中是否存在该对象,有则返回。
缓存的作用:
1.减少访问数据库的频率。
2.保证缓存中的对象与数据库中的相关记录保持同步。
3.当缓存中的持久化对象之间存在循环关联关系时,Session会保证不出现访问对象图的死循环,以及由死循环引起的JVM堆栈溢出异常。
注意:session中有监控功能是因为它对每个对象都会产生一个快照
当Session加载了customer对象后,会为customer对象的值类型的属性复制一份快照。当清理缓存时,通过比较对象的当前属性和快照,来判断对象的哪些属性发生了变化。
如图:
session.refresh():刷新,让缓存数据参照数据库数据进行缓存中数据的更新。
session.flush():清理,让数据库数据参照缓存数据进行数据库中数据的更新,但是并不提交事务。
session.clear():清空,删掉所有缓存的引用。(但是并不意味着被引用的对象立即被垃圾回收机制清除,因为还可能有其他变量引用此对象)
注意session的commit()和flush()方法的区别:
1.flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务
2.commit()方法会先调用flush()方法,然后提交事务。提交事务意味着对数据库所做的更新被永久保存下来。
- hibernate Session的使用
- hibernate的session相关
- Hibernate的session.flush
- hibernate的session
- Hibernate的Session工厂
- Hibernate的Session详解
- hibernate session 的特点
- Hibernate的Session介绍
- Hibernate 的 Session接口
- Hibernate session的缓存
- Hibernate的Session
- Hibernate 的 session 管理
- 细品hibernate的session
- hibernate的session
- 关于Hibernate的Session
- hibernate session的delete
- hibernate的session
- Hibernate Session 的生命周期
- ZOJ 2588 Burning Bridges(求含重边的无向连通图的割边) - from lanshui_Yang
- 低功耗STM32L-Discovery开发板评测(二)
- WinDbg
- js2dx --- UI
- Maya: 菜单 编辑曲线 > 复制曲面曲线
- Hibernate的Session
- hadoop开发:cenos网络配置
- SPOJ AMR12I Saruman of Many Colours 解题报告
- Maya: 菜单 编辑曲线 > 附加曲线
- WPF MultiBinding 实现控件 Tooltip 多绑定
- C++初步之三 小项目
- Maya: 菜单 编辑曲线 > 分离曲线
- uva 208 Firetruck (DFS + 并查集)
- ios与服务端的交互