加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Hibernate对象(瞬时态,持久态,脱管态)详解

发布时间:2020-12-14 14:42:56 所属栏目:Java 来源:网络整理
导读:Java Hibernate对象 由于最近学习Java Hibernate,这里对Java Hibernate对象的几种状态进行了资料整理, 有兴趣的朋友可以看下。 瞬时(transient): 数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。

Java Hibernate对象

           由于最近学习Java Hibernate,这里对Java Hibernate对象的几种状态进行了资料整理,  有兴趣的朋友可以看下。

瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。

持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;

          持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。

 (当对象save后,会将数据持久化,这时obj.set()后再提交事务hibernate会检测到数据的修改。

而如果在save这个对象之前(即使是处在事务中),也即是还没有持久化这个对象之前,用obj.set()则hibernate不能检测到数据修改,不会影响数据库)

脱管/游离(detached):数据库中有数据与之对应,但当前没有session与之关联;脱管对象状态发生改变,hibernate不能检测到。

hibernate对象的三种状态,转换图:

Commit()会关闭session

面试图:如果判断一个对象处于怎样的状态?

主要的依据是: 1. 看该对象是否处于session,2,看在数据库中有没有对应的记录

总结:

瞬时态: 没有session管理,同时数据库没有对应记录

持久态: 有session管理,同时在数据库中有记录

脱管态/游离态: 没有session管理,但是在数据库中有记录.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读