`

Hibername三种状态(瞬时态 持久态 游离态)

 
阅读更多
Hibernate 三种状态,tansient瞬时态、persistent持久态、detached游离态

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

表示该实体对象在内存中是自由存在的,也就是说与数据库中的数据没有任何的关联,该实体从未与任何持久化上下文联系过,没有持久化标识(相当与主键)。

瞬态实体的特征有:
与数据库中的记录没有任何关联,也就是没有与其相关联的数据库记录
与Session没有任何关系,也就是没有通过Session对象的实例对其进行任何持久化的操作。

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

指该实体对象处于Hibernate框架所管理的状态,也就是说这个实体对象是与Session对象的实例相关的。处于持久态的实体对象的最大特征是对其所作的任何变更操作都将被Hibernate持久化到数据库中。

处于持久态的对象具有的特征为:             
每个持久态对象都于一个Session对象关联
处于持久态的对象是于数据库中的记录相关联的
Hibernate会根据持久态对象的属性的变化而改变数据库中的相应记录

Hibernate三种状态之三:游离状态 (Detached)持久化对象脱离了Session的对象。如Session缓存被清空的对象。特点:已经持久化,但不在Session缓存中。处于此状态的对象叫游离对象;

处于持久态的实体对象,当他不再与Session对象关联时,这个对象就变成了游离态。

游离态对象的特征有:
游离态对象一定是由持久态对象转换而来
游离态实体不再于Session关联
游离态实体对象与数据库中的数据没有直接联系,主要表现在对其进行的修改不再影响到数据库中的数据
游离态实体对象在数据库中有相应的数据记录(如果该记录没有被删除)

三者间转化

new 对象——>瞬时态
瞬时态—save/saveOrUpdate—>持久态
持久态—session.close/clear/evict—>游离态—session.save/session.saveOrUpdate/session.lock—>持久态
持久态—session.delete—>瞬时态
游离态—session.delete—>瞬时态

参考:
http://developer.51cto.com/art/200907/133235.htm
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    浅谈hibernate中对象的3种状态_瞬时态、持久态、脱管态

    Hibernate 中对象的 3 种状态是瞬时态、持久态、脱管态。了解这些状态的特点和转换关系是使用 Hibernate 框架的基础。 瞬时态(Transient) 瞬时态是通过 new 命令开辟内存空间的 Java 对象,例如 `Person person =...

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

    在Hibernate中,对象有三种不同的状态,分别是瞬时态、持久态和脱管态,理解这些状态对于有效地使用Hibernate至关重要。 1. **瞬时态(Transient)**: 瞬时态的对象是新创建的,它们没有与任何Hibernate的Session...

    hibernate三状态

    - **持久态 -> 瞬时态**:当Session关闭或调用clear()方法时,所有持久态对象变为游离态;若调用Session的remove()方法,对象会变为瞬时态并从数据库中删除。 - **持久态 -> 游离态**:Session关闭、evict()方法或...

    Hibernate中对象的三种状态

    本篇将详细阐述Hibernate中的瞬时态、持久态和脱管态,以及它们之间的转换。 1. 瞬时态(Transient): 瞬时态的对象是在内存中创建的,尚未与数据库中的任何记录关联。它们没有持久化标识(ID),在Hibernate的...

    浅谈Java实体对象的三种状态以及转换关系

    Java实体对象的三种状态是指在Hibernate框架中,实体对象在生命周期中所经历的三个阶段,即瞬时态、持久态和游离态。 瞬时态(New or Transient):当创建一个新的实体对象时,它处于瞬时态。这时对象只是一个保存...

    Hibernate三种状态区分

    在 Hibernate 中,对象有三种不同的状态,这些状态决定了对象与数据库之间的关联程度以及如何进行数据操作。理解这些状态对于有效地使用 Hibernate 至关重要。 1. **瞬时态(Transient)**: - 瞬时态的对象是刚刚...

    hibernate+状态详解

    首先,我们需要理解Hibernate管理的对象有三种主要状态:瞬时态(Transient)、持久态(Persistent)和脱管态(Detached)。每种状态都有其特定的特征和行为,下面分别进行阐述。 1. **瞬时态(Transient)**: 当...

    浅谈Hibernate对象状态之间的神奇转换

    整个过程中,对象状态会发生多次转换,包括瞬时态、持久态、脱管态三种状态。 本文详细介绍了 Hibernate 对象状态之间的神奇转换关系,希望能够帮助读者更好地理解 Hibernate 框架中的对象状态转换机制。

    hibernate相关配置 3种状态

    本篇将详细阐述Hibernate中的对象映射关系以及对象的三种状态。 对象映射是Hibernate的核心特性,它通过ORM(Object-Relational Mapping)技术将Java对象与数据库表之间的关系进行映射。Hibernate提供了一种声明式...

    java-hibernate持久化

    例如,通过`session.save(book)`将瞬时态对象转换为持久态。 3. **脱管态(Detached)**:对象有OID,但不再与当前Session关联。这种状态下,Hibernate无法检测到对象的变更。对象可以通过`session.evict()`或Session...

    域模型的种状态与hibernate缓存PPT学习教案.pptx

    4. **游离态(Managed)**:游离态是介于瞬时态和持久态之间的一种状态,通常在关闭Session后再打开新的Session,通过`load()`或`get()`方法加载的对象处于游离态,它们与数据库有ID关联,但不在当前Session的缓存中...

    16种英语时态讲解PPT课件.ppt

    16种英语时态讲解,16种英语时态讲解课件,16种英语时态讲解PPT

    hibernate简介及优缺点

    持久态:用session的相关方法将瞬时态对象保存到数据库中与数据库相关联的对象 3.脱管态:将持久态对象所关联的session关闭后,该持久态对象即变为脱管态对象 二.ORM:ORM是对象到关系的映射(Object Relational ...

    中考英语语法专项练习-8动词的时态和态综合演练.docx

    中考英语语法专项练习-8动词的时态和态综合演练.docx

    hibernatede 用例

    在Hibernate中,对象的状态管理是其核心概念之一,主要涉及到三种状态:瞬时态(Transient)、持久态(Persistent)和游离态(Detached)。 - **瞬时态**:指新创建但尚未被任何`Session`管理的对象,例如代码中的`...

    hibernate3.2生命周期

    - **持久态到瞬时态**:关闭Session或调用`evict()`方法时,对象将从持久态变为瞬时态。对象在Session中的缓存被清除,但数据库中的记录仍然存在。 - **持久态到脱管态**:关闭Session或执行事务提交后,对象变为脱...

    hibernate5--2.数据持久化及事务

    在Hibernate中,对象的状态有三种:瞬时态、持久态和脱管态。通过Session的save()或persist()方法,我们可以将瞬时对象转换为持久对象,确保其状态被持久化到数据库。 **持久化对象的生命周期:** - **瞬时态...

    论文研究-一种可行的时态数据库索引技术.pdf

    时态数据库(Temporal Database)是一种能够处理时间信息的数据模型,它不仅记录数据对象的当前状态,而且记录数据状态随时间的变化历史。时态数据库通过引入时间概念,使得系统能够查询对象在任意时间点或时间段的...

    hibernate的生命周期

    5. **delete()**:从数据库中删除持久态对象对应的记录,同时将对象状态转为瞬时态。 6. **flush()**:强制Session将所有挂起的更改写入数据库,通常在事务提交前调用。 7. **clear()**:清除Session中的所有对象...

    Java对象持久化技术详解

    4. **对象状态管理**:Hibernate维护着三个对象状态:瞬时态、持久态和脱管态。通过这些状态的变化来跟踪和管理对象生命周期。 ### 实现细节 - **对象映射**:例如,可以使用`@Entity`注解标记一个Java类为实体类...

Global site tag (gtag.js) - Google Analytics