您的位置:首页 > 其它

Hibernate中 对象 的三种状态

2015-07-21 14:32 288 查看

在Hibernate中,可以把实体对象看成3中状态,分别是:瞬时态(临时态)、持久态、脱管态(游离态)。

临时态

转换

通过new创建的对象为瞬时态

通过delete方法操作的对象将转变为瞬时态

特征

瞬时态的对象可以被垃圾回收

瞬时态的对象未进行过持久化,未与session关联

持久态

转换

通过get 、load 、list 、iterate 方法查询到的对象为持久态

通过save 、update 方法操作的对象转变为持久态

特征

持久态对象垃圾回收器不能回收

持久态对象进行了持久化,与session相关联,实际上持久态对象存在于session缓存中,由session负责管理。

持久态对象的数据可以自动更新到数据库中,时机是在调用session.flush()时执行。而提交事务时会调用session.flush(),因此提交事务时也会触发同步,可以理解为ts.commit=session.flush()+commit

脱管态

转换

通过session的evict 、clear 、close 方法操作的对象会转变为脱管态

特征

脱管态的对象可以被垃圾回收

脱管态的对象进行过持久化,但已于session解除了关联

3种状态的转换:



瞬时态: session、数据库 里都没有。

持久态: session、数据库 里都有

脱管态: session里有、数据库里没有

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: