`
isiqi
  • 浏览: 16485304 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

关于hibernate session中的三个状态

阅读更多

org.hibernate
Interface Session

All Superinterfaces:
Serializable
All Known Subinterfaces:
EventSource, Session
All Known Implementing Classes:
SessionImpl

public interface Session
extends Serializable

The main runtime interface between a Java application and Hibernate. This is the central API class abstracting the notion of a persistence service.

The lifecycle of a Session is bounded by the beginning and end of a logical transaction. (Long transactions might span several database transactions.)

The main function of the Session is to offer create, read and delete operations for instances of mapped entity classes. Instances may exist in one of three states:

transient: never persistent, not associated with any Session
persistent: associated with a unique Session
detached: previously persistent, not associated with any Session

Transient instances may be made persistent by calling save(), persist() or saveOrUpdate(). Persistent instances may be made transient by calling delete(). Any instance returned by a get() or load() method is persistent. Detached instances may be made persistent by calling update(), saveOrUpdate(), lock() or replicate(). The state of a transient or detached instance may also be made persistent as a new persistent instance by calling merge().

save() and persist() result in an SQL INSERT, delete() in an SQL DELETE and update() or merge() in an SQL UPDATE. Changes to persistent instances are detected at flush time and also result in an SQL UPDATE. saveOrUpdate() and replicate() result in either an INSERT or an UPDATE.

It is not intended that implementors be threadsafe. Instead each thread/transaction should obtain its own instance from a SessionFactory.

A Session instance is serializable if its persistent classes are serializable.

通过以上的描述,我们可以得出如下三种状态关系图

Transient 瞬时态
Persistent 持久态
Detached 游离态

分享到:
评论

相关推荐

    Hibernate_Session_Transaction

    `Session`的第一级缓存有三个主要作用: - **减少数据库访问**:缓存中的对象可以直接访问,减少了对数据库的直接查询,从而提高了性能。 - **保持数据同步**:当对象在缓存中更新时,`Session`会同步这些更改到...

    Hibernate Session 4种对象状态.docx

    在测试代码中,我们可以看到对这四个状态的一些验证: - `testSave()`方法演示了save()如何将临时对象转换为持久化对象,并为对象分配ID。 - 第二个`testSave()`方法试图在save()之前为对象赋ID,这在Hibernate中是...

    Hibernate 对象的三种状态和特点

    在这个状态下,对象并未与任何Session关联,因此它的变化不会自动反映到数据库中。如果对象在临时状态下被垃圾收集器清理,那么这个对象在数据库中的记录并不会受到影响,因为它们之间没有绑定关系。如果想要使对象...

    Hibernate中对象的三种状态

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

    Hibernate中的实体状态及转换

    -> 临时状态(Transient)**:在Session关闭之前,如果执行了`delete()`操作,从数据库中删除了实体,那么即使对象的ID与数据库中的某条记录匹配,当Session关闭后,这个对象也将失去与数据库的联系,成为临时状态。...

    hibernate session详细方法,值得珍藏

    Hibernate Session的生命周期通常包括打开、使用和关闭三个阶段。在应用中,一个Session实例通常对应于一个数据库会话,用于执行数据库操作,如查询、保存、更新或删除实体。Session的创建通常通过SessionFactory...

    Hibernate中的merge使用详情解说

    在 Hibernate 中,对象可以处于三种状态:瞬态、游离态和持久态。当对象处于瞬态时,它还没有被保存到数据库中;当对象处于游离态时,它已经被保存到数据库中,但是当前 Session 已经关闭;当对象处于持久态时,它...

    Hibernate三种状态区分

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

    hibernate的核心接口--Session

    Hibernate 保证同一 Session 实例缓存中的每个数据库记录仅对应一个持久化实例。 - **行为**: 在 Session 清理缓存时,会根据持久化实例的属性变化来同步更新数据库。 **3. 脱管状态 (detached)** - **定义**: ...

    Hibernate三种状态

    其次,持久状态(Persistent)意味着对象已经通过Session的save()、saveOrUpdate()等方法保存到数据库,并且仍然在Hibernate的缓存管理中。在这种状态下,对象的任何改动在事务提交时会被自动同步到数据库。例如,...

    HIbernate Session 详解

    2. **Hibernate中Java对象的状态**:在Hibernate中,对象有三种状态:瞬时态、持久态和游离态。瞬时态指的是未与 `Session` 关联的对象;持久态指的是已经与 `Session` 关联且被 `Session` 缓存管理的对象;游离态则...

    Hibernate 三种状态

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

    SSHnote session函数的对象状态转换

    在Hibernate中,对象有三种基本状态:瞬时(Transient)、持久化(Persistent)和脱管(Detached)。理解这些状态及其之间的转换对于有效地使用Hibernate进行数据操作至关重要。 1. **瞬时状态(Transient)**: ...

    Hibernate三种状态和Session常用的方法

    Hibernate三种状态和Session常用的方法 Hibernate 作为一个...理解 Hibernate 中的三种状态和 Session 中的常用方法是非常重要的。只有深入了解这些机制,我们才能更好地使用 Hibernate 框架来开发高效的应用程序。

    hibernate的_映射、三态、脏数据、Session缓存

    **Session缓存**是指在一个Session生命周期内,Hibernate用来存储已加载过的实体对象以及这些对象的状态变化的地方。Session缓存是一种一级缓存,它是每个Session独有的。 - **一级缓存**:默认情况下,每个Session...

    模拟hibernate的session.save()功能

    首先,`session.save()`是Hibernate中的一个关键方法,用于将一个新的或已更新的对象状态保存到数据库中。在模拟这个功能时,我们需要关注以下几点: 1. **对象状态管理**:在Hibernate中,对象有三种状态:瞬时态...

    Hibernate对象持久化状态

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

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

    以上就是关于Hibernate对象三状态以及OneToOne、OneToMany和ManyToMany关系映射的详细讲解,希望对你理解Hibernate的工作原理和实践有所帮助。在实际开发中,根据业务需求灵活运用这些关系映射,能够有效地管理和...

    hibernate 3.6 中文 chm

    Hibernate是Java开发中的一个重要工具,它允许程序员以面向对象的方式处理数据库,极大地简化了数据库操作。以下是基于这个CHM文档的一些关键知识点: 1. **Hibernate概述**:Hibernate是一种开源的ORM框架,它通过...

    hibernate中文参考手册

    《Hibernate中文参考手册》是Java开发领域中关于Hibernate框架的重要学习资源,主要涵盖了Hibernate的中文API及详尽的参考信息。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它极大地简化了Java应用程序对...

Global site tag (gtag.js) - Google Analytics