Hibernate学习之----------对象的三种状态
在Hibernate中对象的状态变化是比较频繁的,如果单从其状态有三种状:
- transient (瞬时态),
- detached (托管态)
- persistant (持久态).
下面来理解三种状态:
1.transient瞬时态:
该状态下的对象即是在new出一个对象后,没有调用任何其他的hibernate的save,update方法,也没有commit,换句话说就是只在内存中存在,session的缓存中没有,数据库中也没有.
2.persistant (持久态):
该状态下的对象在内存中存在,在session的缓存中也有,数据库中也存在,很可能发生在场创建对象并用事务提交到数据库中后的状态。
3.detached (托管态)
该状态下的对象在内存中存在,在session的缓存中没有,而在数据库中以保存存在,因此这种状态多发生在保存一个对象并关闭了session之后,这样session的缓存中就不存在该对象了!
Hibernate中持久化对象的生命周期有临时态、持久态和游离态三种。
处于临时态的对象主键值为空,并且未与session关联,数据未保存到数据库中
处于持久态的对象与session关联起来,持久化后对象中的数据被保存到数据库中,并且主键值按照.hbm.xml文件中配置的生成方式生成相应的值
处于游离态的对象脱离了session的管理,是持久化后的一种状态,主键值按照.hbm.xml文件中配置的生成方式生成相应的值
当new一个新的对象时,该对象处于临时态
当该对象被当作session的参数使用的时候,该对象处于持久态
事务提交,session关闭后,该对象处于游离态
以上仅代表个人观点!