java对象的三种状态
当前应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期持久化生命周期是Hibernate中的一个挂按键的概念,正确地理解生命周期可以更好的了解Hibernate的实现原理 掌握Hibernate的正确用法,Hibernate框架通过Session来管理java对象的状态,在持久化生命周期中java对象存在以下三种状态
1瞬时状态(Transient)
通过new创建对象后,对象并没有立即持久化 他并未与数据库发生任何关系,此时java对象的状态为瞬时状态,Session对与瞬时状态的对象一无所知,当对象不在被其他对象引用时他的数据也就丢失了,对象将按照垃圾回收机制处理
2持久状态(Persistent)
当对象与Session关联 被Session管理时 他就除于持久状态,处于持久状态的对象拥有数据标识(数据库中的主键值)那么对象是什么时候与session对象关联的呢
有两种方式:第一种通过Session的查询接口或者是get()方法或者是load方法()从数据库中加载对象的时候,家在状态的对象,通过调用session的save方法或者saveOrUpdate方法时java对象也与session发生关联,对于处于持久状态的对象,session会跟踪和管理他们,如果对象的内部状态发生了任何变化,hibernate会选择合适的实际(如事务提交时)将变更固化到数据库中。
3游离状态(Detached)处于持久化的对象 脱离与其关联的Session管理后对象就处于游离状态,处于游离状态的对象Hibernate无法感知到对象的任何操作Session提供了两个方法(Update() merge())将处于游离状态的对象与一个新的session发生关联,这是对象的状态就从游离转持久化。