`

hibernate 的状态

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

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

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

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




Hibernate三种状态中游离对象和临时对象异同:

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

游离对象由持久化对象关闭Session而转化而来,在内存中还有对象所以此时就变成游离状态了;

Hibernate和SQL的关系:

在操作了hibernate的方法如save()等后,并没有直接生成sql语句,去操作数据库,而是把这些更新存入Session中,只有Session缓存要被更新时,底层的sql语句才能执行,数据存入数据库;

下面举例说明:

一,Session.save(user)运行机理。
1,把User对象加入缓存中,使它变成持久化对象;
2,选用映射文件指定的标识生成ID;
3,在Session清理缓存时候执行:在底层生成一个insert sql语句,把对象存入数据库;

注意:在你执行Session.save(user)后,在Session清理缓存前,如果你修改user对象属性值,那么最终存入数据库的值将是最后修改的值;此过程中ID不能被修改;

二,Session.delete(user)运行过程。
如果user是持久化对象,则执行删除操作,同样底层数据库的执行条件是:在Session清理缓存时候;
如果user是游离对象:
1,将user对象和Session关联,使之成为持久化对象;
2,然后按照user 是持久化对象的过程执行;



  • 大小: 13.4 KB
分享到:
评论

相关推荐

    Hibernate中的实体状态及转换

    在Java的ORM框架Hibernate中,实体管理是其核心功能之一,而实体的状态管理则是理解Hibernate工作原理的关键。本文将深入探讨Hibernate中的实体状态及其转换,帮助开发者更好地掌握如何有效地使用Hibernate进行数据...

    hibernate的三种状态及其相互转换

    这是一个讲解了关于hibernate三种状态之间的转换,如果想知道他们之间的相关总结和理解,这是一个不错的选择

    hibernate 状态详解

    详细介绍hibernate 的几种状态,包括在几种状态下可以作的打操作 和每个状态的介绍,能更深入了解到 hibernate的执行过程

    jaft:只是帆船比赛的计时器(未完成且处于Hibernate状态的项目)

    【标题】"jaft:只是帆船比赛的计时器(未完成且处于Hibernate状态的项目)" 提供的信息表明,这是一个用Java编程语言开发的项目,主要用于帆船比赛的计时功能。然而,根据描述,这个项目似乎还未完成,并且目前的...

    hibernate 参考

    Hibernate 管理对象的状态,主要包括三种状态: 1. **瞬时状态(Transient State)**:对象在内存中,但尚未与数据库关联。如果程序退出,这些数据会丢失。 2. **持久化状态(Persistent State)**:对象已经通过 ...

    Hibernate 对象的三种状态和特点

    在Java的持久化框架Hibernate中,对象的状态是理解其工作原理的关键部分。这些状态决定了对象与数据库之间的关联程度,以及Hibernate如何处理对象的生命周期。以下是Hibernate对象的三种主要状态及其特点: 1) 临时...

    hibernate对象三种状态

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

    Hibernate三种状态区分

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

    SpringTest:简单的Spring Boot应用程序,用于在Hibernate状态下学习L2缓存

    弹簧测试一个简单的Spring Boot应用程序,用于在Hibernate状态下测试Redisson L2缓存

    hibernate中session对象的状态详解

    hibernate中session对象的状态详解

    hibernate笔记

    #### 二、Hibernate状态管理 在使用Hibernate时,实体对象会处于不同的生命周期状态,这些状态包括: - **瞬态(Transient)**:当一个对象尚未被持久化到数据库中且没有关联的Session时的状态。 - **持久...

    Hibernate中对象的三种状态

    在Java的持久化框架Hibernate中,对象的状态管理是其核心特性之一。理解并掌握对象的三种状态对于开发高效、稳定的数据库应用至关重要。本篇将详细阐述Hibernate中的瞬时态、持久态和脱管态,以及它们之间的转换。 ...

    Hibernate对象状态以及各种保存方法的区别

    在 Hibernate 中,对象的状态管理是至关重要的,因为它直接影响到对象如何与数据库交互。以下是 Hibernate 中对象的三种状态以及相关的保存方法: 1. **瞬时对象(Transient Objects)** - 当使用 `new` 关键字...

    Insomnia:当您需要执行后台工作(例如通过DLNA下载或投射视频)时,可防止移动Windows设备(例如Microsoft Surface Pro)进入Hibernate状态的帮助程序工具。 提供便利功能,例如在不使设备进入睡眠状态的情况下关闭显示器

    当您需要执行后台工作(例如通过DLNA下载或投射视频)时,可防止移动Windows设备(例如Microsoft Surface Pro)进入Hibernate状态的帮助程序工具。 提供便利功能,例如在不使设备进入睡眠状态的情况下关闭显示器。

    Hibernate三种状态

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

    hibernate+状态详解

    本篇将详细探讨Hibernate中的对象状态,这对于我们理解和优化应用性能至关重要。 首先,我们需要理解Hibernate管理的对象有三种主要状态:瞬时态(Transient)、持久态(Persistent)和脱管态(Detached)。每种...

    Hibernate 三种状态

    ### Hibernate 三种状态详解 #### 一、引言 Hibernate 是一款开源的对象关系映射 (ORM) 框架,它极大地简化了 Java 应用程序与数据库之间的交互过程。在 Hibernate 中,对象的状态管理是其核心特性之一,主要包括...

    hibernate-3.2源代码

    在Hibernate中,对象有三种状态:瞬时态、持久态和脱管态。理解这些状态对于正确操作对象至关重要,例如,只有持久态对象才能参与事务。 六、缓存机制 Hibernate 3.2引入了二级缓存,通过CacheProvider实现,如...

    Hibernate学习笔记整理

    2. 说明:当执行 19 行代码的时候,person 对象由临时状态转化成持久化状态,这个时候数据库没有对应的数据,但是该对象在 Hibernate 内部。 3. 说明:当执行 20 行代码的时候,事务提交了,该对象还是持久化状态的...

    hibernate aip hibernate aip

    9. **错误处理和日志记录**:理解Hibernate常见的错误和异常,如 detached entity passed to persist 等,并配置合适的日志系统,如Log4j或SLF4J,以便追踪应用运行状态。 总的来说,Hibernate AIP涵盖了从项目初始...

Global site tag (gtag.js) - Google Analytics