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

hibernate中对象的三种状态

阅读更多
标签:

hibernate

hibernate中对象的三种状态



持久态对象的标志是它有id值,并且会被存入session的一级缓存。特点是对它们的操作hibernate是能够知道的并且在调用 session.flush()方法时将对它们的更新操作(如obj.setXxx()方法)同步到数据库。在调用commit()方法前会自动调用 flush()方法,用户也可以自己调用flush()方法。调用session.clear()方法会清空一级缓存,将所有的持久化对象变为脱管的,因 此调用clear()方法前一定要调用session.flush()方法,将一级缓存中的持久化对象同步到数据库。

 

脱管对象与瞬时对象都不在hibernate的管理中,它们的区别是脱管对象有id值,数据库中有记录和它对应,但瞬时对象没有id值也没有数据库记录和它对应。

 

要强调的是瞬时对象调用session.save(obj)方法后对象虽然变为持久态的,有id值,但是此时数据库中不一定有一条记录和对象对应。如果对 象的主键生成策略是“native”,那么hibernate使用数据库自身的机制生成主键(mysql是auto_increment,oracle使 用squence机制),这时只有当数据插入到数据库后才会得到它的主键,因此会在session.save(obj)方法时向数据库发送insert语 句,因此session.save(obj)后数据库中有记录和对象对应,但是如果对象的主键生成策略是“uuid”或“hilo”,这时要生成对象的 id不需要将对象插入数据库(uuid方式不需要访问数据库,根据主机IP等信息生成,hilo方式hiberhinate维护数据库中一张用于生成id 的表),这时session.save(obj)后对象有id值,但数据库中没有记录和它对应,只有调用flush()方法后才会发送insert语句, 将对象和数据库同步。

分享到:
评论

相关推荐

    hibernate对象三种状态

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

    Hibernate 对象的三种状态和特点

    以下是Hibernate对象的三种主要状态及其特点: 1) 临时状态(Transient State): 当通过`new`关键字创建一个新的对象时,该对象处于临时状态。在这个状态下,对象并未与任何Session关联,因此它的变化不会自动反映...

    Hibernate中对象的三种状态

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

    hibernate中session对象的状态详解

    hibernate中session对象的状态详解

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

    以下是 Hibernate 中对象的三种状态以及相关的保存方法: 1. **瞬时对象(Transient Objects)** - 当使用 `new` 关键字创建一个对象时,它处于瞬时状态。这种状态的对象与数据库中的任何记录没有关联,只存在于...

    Hibernate三种状态区分

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

    hibernate的各种保存方式的区别以及hibernate对象的三种状态[定义].pdf

    1. Hibernate对象的三种状态: - Transient(瞬态):这是对象的初始状态,对象在内存中独立存在,没有与任何Session关联,也没有持久化标识,即没有与数据库中的记录对应。对瞬态对象的修改不会自动同步到数据库。...

    Hibernate三种状态

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

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany

    一、Hibernate对象三状态 1. 游离态(Detached):对象在应用程序中创建,但尚未与Session关联。对象的状态和数据库中的记录可能不一致。 2. 瞬时态(Transient):对象刚被创建,与Session关联,但尚未持久化到...

    Hibernate中po对象的三种状态分析[借鉴].pdf

    以下是关于Hibernate中对象的三种状态以及保存方法的详细分析: 1. **对象的三种状态** - **瞬态(Transient)**:对象刚被创建,尚未与任何Session关联,不具备持久化能力。对瞬态对象的修改不会自动同步到数据库...

    Hibernate对象持久化状态

    本篇文章将详细阐述 Hibernate 中对象的三种状态——临时状态、持久化状态和游离状态,以及 Session 缓存的工作原理。 1. Session 缓存及作用 Session 是 Hibernate 提供的一个接口,它充当了应用程序与数据库之间...

    Hibernate Session 4种对象状态.docx

    理解Hibernate的对象状态对于有效地进行数据库操作至关重要。正确管理对象状态可以避免数据丢失、重复插入或其他数据库一致性问题。在开发过程中,应该注意何时创建、保存、更新和删除对象,以及它们与Session的关系...

    Hibernate 三种状态

    持久化状态是指已经被添加到当前 Session 缓存中的对象状态。一旦对象变为持久化状态,Hibernate 就会对其进行跟踪,并在适当的时候更新或删除数据库中的数据。例如: ```java // 获取 Session Session session = ...

    Hibernate中的实体状态及转换

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

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

    在本教程中,我们将深入探讨实体对象的三种状态以及`saveOrUpdate`方法的工作原理。 首先,让我们了解实体对象的三种状态: 1. **瞬时状态(Transient)**:当一个新的实体对象在内存中创建,但尚未被Hibernate...

    hibernate相关配置 3种状态

    2. Hibernate对象的三种状态: -瞬时态(Transient):对象刚刚被创建,尚未与Session关联,也没有持久化到数据库中。如果对象在这个状态下被垃圾收集器回收,那么对象的信息将会丢失。 -持久态(Persistent):...

    Hibernate持久化对象的生命周期

    首先,我们来看一下Hibernate中持久化对象的三种基本状态: 1. **瞬时对象(Transient Objects)**: - 当使用`new`关键字创建一个新的Java对象时,该对象是瞬时的。这意味着它们与数据库没有任何关联。如果对象...

    Hibernate 操纵持久化对象

    Hibernate提供了四种对象状态:瞬时态、持久态、脱管态和临时态,理解这些状态对于有效操纵持久化对象至关重要。 **三、配置Hibernate** 在开始操纵持久化对象之前,需要先配置Hibernate。这包括编写Hibernate配置...

    精通Hibernate:Java对象持久化详解.zip

    在Java开发中,持久化是将应用程序中的对象状态保存到持久存储介质(如数据库)的过程。Hibernate通过提供一种对象-关系映射机制,使得Java对象可以直接与数据库表进行交互,而无需编写大量的SQL语句。这种映射机制...

    Hibernate操作持久化对象

    在Hibernate中,对象的状态分为瞬时状态、持久状态和脱管状态。瞬时状态的对象存在于内存中,但未与SessionFactory关联;持久状态的对象已经被持久化到数据库,并且可以通过SessionFactory追踪;脱管状态的对象曾经...

Global site tag (gtag.js) - Google Analytics