三态:
自由态:用new创建的对象,它没有持久化,没有处于Session中,处于此状态叫自由态( 临时状态(Transient))
持久态:已经持久化,加入到了Session缓存中,并且在数据库中有相应数据,处于此状态叫持久态(Persistent)
游离态:持久化对象脱离了Session的对象。如Session缓存被清空的对象,处于此状态叫游离态(Detached)
游离对象和临时对象异同:
两者都不会被Session关联,对象属性和数据库可能不一致;
游离对象有持久化对象关闭Session而转化而来,在内存中还有对象所以此时就变成游离状态了;
三态之间的转换方法:
①如何成为自由态?对象通过构造方法成为自由态;持久态和游离态则通过session的delete方法成为自由态
②如何成为持久态?对象可以由session的load或get方法直接成为持久态;自由态对象可以通过save,saveOrUpdate或persist方法成为持久态;游离态对象则可以通过update,saveOrUpdate成为持久态
③如何成为游离态?游离态只能由持久态转换而来,通过close或clear方法实现。
转自:http://www.cnblogs.com/koal/p/4300016.html