`
fnasty
  • 浏览: 13987 次
  • 性别: Icon_minigender_1
  • 来自: 南京—苏州
社区版块
存档分类
最新评论

Hibernate实体3种状态Transient/Persistent/Detached

    博客分类:
  • java
阅读更多

实体对象的生命周期有三种状态:
      1.Transient(自由状态)
      此时的实体对象和数据库中的记录无关联,只是一个普通的JavaBean。
      2.Persistent(持久状态)
      此时的实体对象和数据库中的记录有关联,其变更将由Hibernate固化到数据库中。该实体对象处于由Hibernate框架所管理的状态。
      3.Detached(游离状态)
      处于Persistent状态的对象,其对应的Session实例关闭之后,那么,此对象就处于"Detached"状态。Detached状态和Transient状态的区别在于Detached状态的对象可以再次与某个Session实例相关联而成为Persistent对象。

      从实体对象是否被纳入Hibernate实体管理容器的角度,Transient和Detached状态的实体对象可以统称为VO(Value Object),而被管理的实体对象称为PO(Persistent Object)。两者的区别:
      1.VO是相对独立的实体对象,处于非管理状态。
      2.PO是Hibernate纳入其实体管理容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反映到实际数据库中。
      3.如果一个PO与其对应的Session实例分离,那么此时,它又会变成一个VO。

      下图是我画的实体对象生命周期的状态转换图:

vopolife.JPG

分享到:
评论

相关推荐

    Hibernate中的实体状态及转换

    首先,我们要了解Hibernate定义的三种实体状态: 1. **临时状态(Transient)**:当我们在程序中通过`new`关键字创建一个实体对象时,它默认处于临时状态。此时,对象未被Hibernate管理,即使对象包含了主键ID,如果...

    hibernate对象三种状态

    在Java的持久化框架Hibernate中,对象存在三种不同的状态,分别是持久态(Persistent)、自由态(Transient)和游离态(Detached)。这三种状态分别对应了对象与数据库的关联程度,理解它们对于高效地使用Hibernate...

    Hibernate实体层设计

    Hibernate提供了四种状态:瞬时态(Transient)、持久态(Persistent)、游离态(Detached)和删除态(Removed)。理解并掌握这些状态,可以帮助我们更好地控制对象的生命周期,避免数据不一致。 在实体层设计中,...

    Hibernate三种状态

    Hibernate对象有三种状态:瞬时状态(Transient)、持久状态(Persistent)和脱管状态(Detached)。理解这些状态对于优化数据操作和避免潜在的问题至关重要。 首先,瞬时状态(Transient)是指通过new关键字创建的...

    Hibernate 对象的三种状态和特点

    3) 脱管或游离状态(Detached State): 当Session关闭,或者使用`session.evict()`方法显式地将对象从Session缓存中移除,对象将进入脱管状态。在脱管状态下,对象不再受Session管理,即使对象的属性发生改变,这些...

    Hibernate实体对象操纵

    Hibernate定义了四种实体状态: - **瞬时态(Transient)**:新创建的对象,尚未与Session关联,不具有持久性。如果对象被垃圾收集器清除,那么数据将丢失。 - **持久态(Persistent)**:对象已经通过Session的...

    Hibernate三种状态区分

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

    Hibernate 三种状态

    在 Hibernate 中,对象的状态管理是其核心特性之一,主要包括三种状态:瞬时状态(Transient)、持久化状态(Persistent)以及游离状态(Detached)。本文将详细阐述这三种状态的特点及其转换机制。 #### 二、瞬时...

    05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法

    1. **瞬时状态(Transient)**:当一个新的实体对象在内存中创建,但尚未被Hibernate管理时,它处于瞬时状态。这类对象没有与数据库中的任何记录关联,如果对象消亡,其信息不会保存到数据库。 2. **持久化状态...

    Hibernate中对象的三种状态

    3. 脱管态(Detached): 当持久态对象的Session被关闭,或者通过`clear()`或`evict()`方法显式地从Session中移除时,对象变为脱管态。此时,对象仍然存在于内存中,但与数据库的连接已经断开。如果对脱管态对象进行...

    《深入浅出Hibernate》读书笔记

    Transient和Detached状态的对象统称为VO(Value Object),不被Hibernate管理,而Persistent对象被称为PO(PersistentObject),由Hibernate的实体管理容器管理,其变更会在事务提交时同步到数据库。 其次,实体...

    hibernate相关配置 3种状态

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

    Hibernate Session 4种对象状态.docx

    Hibernate将对象的状态划分为四种:临时状态、持久化状态、游离状态和删除状态。这些状态反映了对象与数据库记录之间的关系,有助于理解Hibernate如何管理和操作数据。 1. **临时状态(Transient State)**: 当一...

    如何解决hibernate自动更新实体类的问题共5页.pd

    2. **使用Detached状态**:Hibernate的对象有四种状态:Transient、Persistent、Detached和Removed。当对象被detach(分离)后,它的状态变为Detached,此时对它的修改不会触发数据库更新。在需要更新时,再将...

    hibernate.doc

    - 在Hibernate中,持久化对象经历瞬态(Transient)、持久化(Persistent)、托管(Managed)和脱管(Detached)四个状态,它们描述了对象在内存和数据库之间的关系。 四、Hibernate中实体关系的处理 - Hibernate...

    Hibernate3 源代码

    **Hibernate3 源代码详解** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。通过提供一种抽象层,Hibernate 允许开发人员使用面向对象的方式来处理数据,而无需直接...

    hibernate+状态详解

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

Global site tag (gtag.js) - Google Analytics