`
wanxiaotao12
  • 浏览: 477289 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】简单理解Hibernate三种状态的概念及互相转化

 
阅读更多

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

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

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

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

Hibernate三种状态

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 是持久化对象的过程执行;

分享到:
评论

相关推荐

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

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

    hibernate对象三种状态

    这三种状态分别对应了对象与数据库的关联程度,理解它们对于高效地使用Hibernate进行数据操作至关重要。 ### 1. 持久态(Persistent) **持久态**是指对象已经被Hibernate管理,并且其状态与数据库中的记录同步。...

    Hibernate三种状态区分

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

    Hibernate中对象的三种状态

    在Java的持久化框架Hibernate中,对象的状态管理是其核心特性之一...总之,理解Hibernate中对象的三种状态以及它们之间的转换对于开发人员来说至关重要。熟练掌握这些概念有助于编写出更加高效、可靠的Java持久化代码。

    Hibernate三种状态

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

    Hibernate中的实体状态及转换

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

    hibernate 三种状态的转换

    在Hibernate ORM框架中,实体对象可以处于三种不同的状态:瞬时状态(Transient)、持久状态(Persistent)和脱管状态(Detached)。理解这些状态对于有效地管理和更新数据库中的数据至关重要。 **瞬时状态...

    Hibernate 对象的三种状态和特点

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

    Hibernate入门讲义,理解ORM概念

    Hibernate入门讲义,理解ORM概念Hibernate入门讲义,理解ORM概念Hibernate入门讲义,理解ORM概念Hibernate入门讲义,理解ORM概念Hibernate入门讲义,理解ORM概念Hibernate入门讲义,理解ORM概念

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

    在Java的持久化框架Hibernate中,实体对象的状态管理和`saveOrUpdate`方法是核心概念,对于理解和有效使用Hibernate至关重要。在本教程中,我们将深入探讨实体对象的三种状态以及`saveOrUpdate`方法的工作原理。 ...

    Hibernate三态及简单实例

    Hibernate三态及简单实例,主要简单的使用Hibernate的CRUD,这是我学习Hibernate写的。跟大家分享下。

    三种查询方式跟踪Hibernate源码

    通过这三种查询方式的源码跟踪,开发者不仅能深入理解Hibernate的工作机制,还能发现可能的性能瓶颈,为优化应用提供依据。在学习过程中,建议结合具体的示例进行实践,将理论知识与实际操作相结合,以达到最佳的...

    hibernate注入的三种方式

    在探讨Hibernate注入的三种方式时,我们主要关注的是如何在Spring框架中整合Hibernate,以便实现对象关系映射(ORM)并进行数据库操作。这三种方式包括:通过`LocalSessionFactoryBean`配置、直接注入`...

    hibernate三状态

    其中,Hibernate的对象状态管理是其核心特性之一,理解并掌握对象的三种状态对于有效使用Hibernate至关重要。本文将详细解析Hibernate的三状态以及它们在实际开发中的应用。 一、Hibernate对象的三种状态 1. **瞬...

    Hibernate第三方类库

    在使用Hibernate时,除了核心的Hibernate库,我们通常还需要引入一些第三方类库来增强其功能或满足特定需求。这里提到了三个重要的第三方库:dom4j、log4j和antlr。 1. dom4j-1.6.1.jar: Dom4j是一个非常灵活的...

    hibernate相关配置 3种状态

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

    Hibernate Session 4种对象状态.docx

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

    本人理解hibernate 与 JDBC 的最本质区别

    - **Hibernate**:错误通常与对象状态或映射配置相关,更容易理解和修复。 7. **学习曲线**: - **JDBC**:相对简单,易于上手,但需要深入理解 SQL。 - **Hibernate**:学习曲线较陡峭,需要理解 ORM 概念和...

    基于hibernate的简单留言本

    4. **对象状态管理**: Hibernate管理对象的瞬时、持久化、托管和脱管四种状态,确保数据的一致性。 5. **HQL与SQL的区别**: Hibernate查询语言(HQL)是面向对象的,而SQL是面向关系的。HQL可以直接操作对象,避免...

Global site tag (gtag.js) - Google Analytics