hibernate持久化对象的四个状态
2017-09-21 22:12
183 查看
持久化操作是Hibernate的核心。
Hibernate的实例状态分为4种:
1、瞬时状态(Transient)
2、持久化状态(Persistent)
3、游离状态(Detached)
4、删除状态
瞬时状态(Transient)
通过new开辟内存空间创建的实体对象,但是它没有纳入hibernate session的管理之中,如果没有变量对它引用,它将会被JVM(垃圾回收器)回收。瞬时状态的对象在内存中是孤立的,它与数据库无任何关联,仅仅是一个信息携带的载体。
一个瞬时状态对象被持久化状态对象引用,它也会自动变为持久化状态对象。例如调用session的save、saveorupdate等方法的时候。
持久化状态(Persistent)
持久化状态对象存在与数据库中的数据关联,它总是与会话状态(Session)和事务(Transaction)关联在一起。当持久化状态对象发生变动时并不会立即执行数据库操作,只有当事务结束时,才会更新数据库,以便保证Hibernate的持久化对象和数据库操作的同步性。
当持久化状态对象变为托管状态对象时,它将不在Hibernate持久层的管理范围之内。
脱管状态(Detached)
当持久化对象的Session关闭之后,这个对象就从持久化状态变为托管状态。托管状态的对象仍然在与数据库中的数据关联,但是他并不在Hibernate的Session管辖范围之内。
如果将脱管状态的对象重新关联到某个新的Session上,它将变回持久化状态对象。
删除态
调用session的delete方法时,对象转为删除态。删除态只能等待被回收
Hibernate的实例状态分为4种:
1、瞬时状态(Transient)
2、持久化状态(Persistent)
3、游离状态(Detached)
4、删除状态
瞬时状态(Transient)
通过new开辟内存空间创建的实体对象,但是它没有纳入hibernate session的管理之中,如果没有变量对它引用,它将会被JVM(垃圾回收器)回收。瞬时状态的对象在内存中是孤立的,它与数据库无任何关联,仅仅是一个信息携带的载体。
一个瞬时状态对象被持久化状态对象引用,它也会自动变为持久化状态对象。例如调用session的save、saveorupdate等方法的时候。
持久化状态(Persistent)
持久化状态对象存在与数据库中的数据关联,它总是与会话状态(Session)和事务(Transaction)关联在一起。当持久化状态对象发生变动时并不会立即执行数据库操作,只有当事务结束时,才会更新数据库,以便保证Hibernate的持久化对象和数据库操作的同步性。
当持久化状态对象变为托管状态对象时,它将不在Hibernate持久层的管理范围之内。
脱管状态(Detached)
当持久化对象的Session关闭之后,这个对象就从持久化状态变为托管状态。托管状态的对象仍然在与数据库中的数据关联,但是他并不在Hibernate的Session管辖范围之内。
如果将脱管状态的对象重新关联到某个新的Session上,它将变回持久化状态对象。
删除态
调用session的delete方法时,对象转为删除态。删除态只能等待被回收
相关文章推荐
- Hibernate持久化对象的状态
- hibernate的持久化对象的三种状态
- hibernate持久化对象的状态
- Hibernate持久化对象的生命周期(三种状态:临时、持久、游离 )
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate持久化对象的三个状态
- hibernate常用的接口和持久化对象的状态变化
- Hibernate持久化对象的三种状态
- Hibernate持久化对象存在三种状态
- 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
- hibernate持久化对象的三种状态
- Hibernate学习笔记 之 持久化对象的状态
- Hibernate持久化对象状态、转换方法和操作步骤
- Hibernate之持久化对象的三种状态
- 【Hibernate框架】对象的三种持久化状态
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate -- 持久化对象的三种状态
- hibernate持久化对象状态 .
- 【Hibernate框架学习】:Hibernate进阶之持久化对象状态
- Hibernate持久化对象三种状态的区分,以及save,update,saveOrUpdate,merge,persist等的使用