Hibernate session的缓存
来源:互联网 发布:行知科技 编辑:程序博客网 时间:2024/05/20 02:27
Hibernate的SessionFactory是线程安全的,这个SessionFactory负责创建Session实例,这个Session实例却是非线程安全的。一个数据源对应一个SessionFactory,而一个SessionFactory能产生多个Sessioni实例。至于为什么,本人还没有研究那么深,在这里不做任何解释。使用Hibernate时对象的生命周期、事务的管理、数据库的存取都与Session相关,所以这里重点说一下这个Session。
如果希望一个对象一直处于生命周期中,就必须保证至少一个变量应用它,如下图所示:
上图表示对象的内存分配以及对象关系。c一直引用Customer对象,Customer对象的生命周期就不会结束,当c不在引用Customer对象时,垃圾收集器就会在某个时间点将该对象清理掉,该对象生命周期结束。关于内存分配和垃圾收集的信息可以参考《深入理解Java虚拟机:JVM高级特性与最佳实践》。
SessionFactory是一级缓存,Session是二级缓存,通常我们使用的j对象都是放在这个Session缓存中的,只要Session实例没有结束生命周期,那么存放在它缓存中的对象也不会结束生命周期。如上图所示,当调用Session的save方法持久化Customer对象时,Customer对象会被加入到Session缓存中,只要Session缓存没有被清空,那么Customer对象就仍处於生命周期中,那么其他与之关联的对象就可以调用该对象。
Session缓存的作用:
1:减少访问数据库的频率。对象放在缓存中,从缓存中读取数据要比从数据库中读取数据更快。图1为session中get方法的查询时序图
2:当缓存中的持久化对象之间存在循环关联关系时,Session会保证不出现访问对象图的死循环,以及由死循环引起的JVM堆栈溢出异常。
3:保证数据库中的记录与缓存中相应对象保持同步。这里涉及脏检查及清理缓存的机制,在此不做过多解释。
- 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缓存何用只有
- Hibernate中的Session对象的一级缓存
- hibernate一级缓存(session缓存)
- Hibernate Session缓存经验总结
- Hibernate Session缓存概述
- Hibernate Session缓存概述
- Class 'SoapClient' not found in PHP
- android获取屏幕分辨率大小(DisplayMetrics)
- Android常用小工具的使用方法
- 空间点绕任意轴旋转变换公式
- HDU 2059
- Hibernate session的缓存
- 学习 Linux高级编程06_A
- 盘点大佬高考:马云数学考1分 俞敏洪英语考33分 【人生无常】
- MySQL存储过程----创建索引前,先判断索引是否已经存在,如果存在,则不添加,如果不存在,添加
- fragment
- ZSH配置文件
- 学习 Linux高级编程06_B
- 简单的弹性返回顶部JS代码
- 学习J2EE必须掌握的36个Package