hibernate中transient,persistent,detached对象三者之间有什么区别

2022-04-18 科技 59阅读
一、三种状态(Transient、Persistent、Detached)

在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的。对于理解hibernate,JVM和sql的关系有更好的理解。对于需要持久化的JAVA对象,在它的生命周期中有三种状态,而且互相转化。

1,临时状态(Transient):用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象;

2,持久化状态(Persistent):已经持久化,加入到了Session缓存中。如通过hibernate语句保存的对象。处于此状态的对象叫持久对象;

3,游离状态(Detached):持久化对象脱离了Session的对象。如Session缓存被清空的对象。

特点:已经持久化,但不在Session缓存中。处于此状态的对象叫游离对象;

×√
临时状态

(Transient)
持久化状态

(Persistent)
游离状态

(Detached)

是否处于Session缓存中
×

×

数据库中是否有对应记录
×



游离对象和临时对象异同:

两者都不会被Session关联,对象属性和数据库可能不一致;

游离对象有持久化对象关闭Session而转化而来,在内存中还有对象所以此时就变成游离状态了;
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com