当前位置:首页>开发>正文

hibernate对象有几种状态 hibernate三种状态各之间是什么意思

2023-06-24 22:07:51 互联网 未知 开发

 hibernate对象有几种状态 hibernate三种状态各之间是什么意思

hibernate对象有几种状态

答案转载自csdn论坛:http://blog.csdn.net/heng_ji/article/details/686281实体的生命周期中,实体主要经过瞬时(Transient),托管(Attatched或Managed),游离(Detached)和销毁

(Removed)四个状态.

瞬时状态:是指对象被new之后尚未保存到数据库,一旦服务器停止,JVM会回收它所占的内存资源,此时对

象没有与session关联.

托管状态:在数据库中已有数据与之对应,且与session相关联。实体状态转换到托管状态的方法:
A.调用persist(),实体从游离转变到托管,最后变成持久化状态.
B.调用find()或Query执行查询,实体从持久变成托管.
C.调用refresh(),游离实体将被重新加载,变成托管状态.
D.调用merge(),将游离实体变成托管实体.

游离状态:数据库中有数据与之对应但不在session的管理范围,它的属性不与数据库中持久化的实体同

步.
实体从托管变成游离的情况有:
A.当一个事务结束,实体超过持久化上下文作用域,实体变成游离态
B.当复制实体对象或序列化时,实体将变成游离态
C.调用clear方法时,所有的实体将强制转化为游离态

销毁状态:是实体从数据库删除后的状态

hibernate三种状态各之间是什么意思

对于和ibernate而言,对象有三种状态:瞬时对象,持久对象,游离对象或脱管对象
1.瞬时(transient):数据库中没有数据与之对应,超过作用域会被jvm的垃圾收集器回收,一般是new出来且与session没有关联的对象
2.持久(persistent):数据库中有数据与之对应,当前session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到 )。
3,脱管(detached):数据库中有数据与之对应,但当前没有session与之关联;脱管对象状态发生改变,hibernate不能检测到。

最新文章