Hibernate中持久化对象的状态图解析
2013-08-17 20:18
232 查看
hibernate中对象的状态图可以用UML的状态图表示如下:
![](http://s5.sinaimg.cn/bmiddle/4b8abbd6t54ca0b93e8a4)
session就是一级缓存
对以上图形的解析:
1.当一个对象被new了以后此对象处于瞬时态(Transient);
2.然后对此对象执行session的save() 或者saveOrUpdate()方法后,此对象被放入session的一级缓存(即map里(key="对象的id" value="对象本身"))进入持久态.
3.当再对此对象执行evict()/close()/clear()的操作后此对象进入游离态(Detached)
4.游离态(Detached)和瞬时态(Transient)的对象由于没有被session管理会在适当的时机被java的垃圾回收站(garbage)回收.
5.执行session的get()/load()/find()/iternte()等方法从数据库里查询的到的对象,处于持久态(Persistent).
6. 当对数据库中的纪录进行update()/saveOrUpdate()/lock()操作后游离态的对象就过渡到持久态
7..处于持久态(Persistent)与游离态(Detached)的对象在数据库中都有对应的记录.瞬时态(Transient)与游离态(Detached)的对象都可以被回收可是瞬时态的对象在数据库中没有对应的纪录,而游离态的对象在数据库中有对用的纪录。
session就是一级缓存
对以上图形的解析:
1.当一个对象被new了以后此对象处于瞬时态(Transient);
2.然后对此对象执行session的save() 或者saveOrUpdate()方法后,此对象被放入session的一级缓存(即map里(key="对象的id" value="对象本身"))进入持久态.
3.当再对此对象执行evict()/close()/clear()的操作后此对象进入游离态(Detached)
4.游离态(Detached)和瞬时态(Transient)的对象由于没有被session管理会在适当的时机被java的垃圾回收站(garbage)回收.
5.执行session的get()/load()/find()/iternte()等方法从数据库里查询的到的对象,处于持久态(Persistent).
6. 当对数据库中的纪录进行update()/saveOrUpdate()/lock()操作后游离态的对象就过渡到持久态
7..处于持久态(Persistent)与游离态(Detached)的对象在数据库中都有对应的记录.瞬时态(Transient)与游离态(Detached)的对象都可以被回收可是瞬时态的对象在数据库中没有对应的纪录,而游离态的对象在数据库中有对用的纪录。
相关文章推荐
- 亲,hibernate持久化对象的状态图全面解析!
- Hibernate持久化对象状态
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate入门(四)之持久化对象的三种状态
- Hibernate持久化对象的生命周期(三种状态:临时、持久、游离 )
- Hibernate中的持久化上下文与Entity对象的状态
- 新手上路之Hibernate(三):持久化对象三种状态以及session的Get()与Load()区别
- hibernate持久化对象的三个状态
- ORM框架Hibernate (二) 持久化对象的三种状态分析
- Hibernate的学习之路十(持久化对象的三个状态)
- hibernate的持久化对象的状态
- 【Hibernate框架学习】:Hibernate进阶之持久化对象状态
- hibernate 持久化对象的三个状态
- Hibernate——持久化对象状态
- 5 -- Hibernate的基本用法 --5 2 持久化对象的状态
- Hibernate持久化对象存在三种状态
- 【Hibernate】——持久化对象的三种状态
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate持久化对象的三种状态
- hibernate持久化对象状态