Hibernate框架(二)
来源:互联网 发布:磊科 网络尖兵配置 编辑:程序博客网 时间:2024/06/05 04:41
实体对象的生命周期
实体对象是指Hibernate的OR映射关系的域对象(即OR中的O)
实体对象的生命周期指的是实体对象由产生到被GC回收的一段过程,在这段
过程中我们需要理解的是实体对象生命周期的三种状态
实体对象的三种状态
自由状态:实体对象在内存中自由存在 ,与数据库无关
不存在于Session的缓存中,不被任何一个Session实例关联
在数据库中没有对应的记录
持久状态:实体对象处于Hibernate管理下的状态,实体对象的引用被纳入到Hibernate实体容器中加以管理,
此时实体会被Hibernate固化在数据库当中,如当session调用save方法的时候,就会将对象纳入到Hibernate的管理当中
事务提交的时候就会将这个对象固化到了数据库当中,此时的实体对象的状态就是持久状态
当Session调用load方法的时候,就是将一个实体对象由Hibernate加载
简单的说,如果一个实体对象和某个Session实例发生了关联且处于这有效期内
位于一个Session实例的缓存中,持久化对象总被一个Session实例关联
持久化对象和数据库中的相关记录对应
Session在清理缓存时,会根据持久化对象的属性变化来更新数据库
Session的save方法可以把实体对象由自由状态从自由状态换为持久状态
Session的load方法或get方法可以返回持久状态的实体
Session的update,saveOrUpdate和lock方法使实体对象从游离状态变为持久状态
游离状态
持久对象对应的Session关闭以后,这个实体对象就处于了游离状态
实际上Session对象是实体对象在持久化状态的宿主
宿主失效的时候,转化为游离状态
不再位于Session的缓存中,游离状态的实体对象不被Session关联
游离状态是由持久化对象转变过来的,因此在数据库中可能还有它所对应的记录
状态转化
VO和PO的区别
Session接口
作用
Session接口提供了基本的保存,更新,删除和加载Java对象的方法
清理缓存
Session能够在某些时间点,按照缓存的对象的变化来执行相关的SQL语句,
来同步更新数据库,这一过程被称为清理缓存
Session管理
ThreadLocal模式的解决方案
ThreadLocal
模式示例如下,主要是因为有多线程存在,才采用此方法
使用后可以解决线程安全的问题
openSession和getCurrentSession之间的区别
使用getCurentSession的使用方法
Session save
persist
update
saveOrUpdate()
load() get()
delete
- Hibernate框架(二)
- Hibernate框架(二)
- Hibernate框架(二)
- Struts2+Hibernate+Spring框架搭建(二)
- 【HIbernate框架学习】:HQL(二)
- Hibernate框架学习(二)
- Hibernate框架学习(二)
- Hibernate框架学习(二)
- Hibernate框架学习(二)
- Hibernate框架学习(二)
- Hibernate框架学习(二)
- 框架之Hibernate(二)
- Hibernate框架学习(二)
- Hibernate框架学习(二)
- 【HIbernate框架学习】:Hibernate对象继承关系映射(二)
- Hibernate框架二之ManyToOne
- 框架之 hibernate之二
- 初入Hibernate框架<二>
- 并发库学习笔记二
- linux指令 vi和vim
- 如何去掉打印网页时自带的网址以及页码等内容
- 八皇后问题Java版
- C#程序设计(二)----数组排序
- Hibernate框架(二)
- 全局变量、extern/static/const区别与联系
- 提高VS2010/Vs2008反应速度方法
- 并发库学习笔记三
- 关于软件盗版问题的一些思考
- 初学Android,传递复杂数据的Service(六十一)
- Linux vi
- POJ 3278 Catch That Cow
- 推荐资源网站(更新中)