java对象在Hibernate中的状态
1. 临时状态(transient):刚用new语句创建,还没有被持久化,并且不处于Session缓存中.临时对象.
2. 持久化状态(persistent):已经被持久化,并且加入到Session的缓存中.持久化对象.
3. 删除状态(removed):不再处于Session的缓存中,并且Session已经计划将其从数据库中删除,被删除对象.
4. 游离状态(detached):已经被持久化,但不再处于Session的缓存中.游离对象.
临时对象的特征
1. 使用代理主键的情况下,OID通常为null.
2. 不处于Session的缓存中,即不被任何一个Session实例关联.
3. 在数据库中无对应记录.
在以下状态下,Java对象进入临时状态
1. 当通过new语句刚创建一个Java对象,此时处于临时状态,不和数据库中的任何记录对应.
2. 在Hibernate配置文件中的hibernate.use_identifier_rollback属性为true的情况下,Session的delete()方法能使一个持久化对象或游离对象转变为临时对象.
持久化对象的特征
1. OID不为null.
2. 位于一个Session实例的缓存中,即总是被一个Session实例关联.
3. 持久化对象和数据库中的相关记录对应.
4. Session在清理缓存时,会根据持久化对象的属性变化,同步更新数据库.
使Java对象进入持久化状态
1. Session的save()方法把临时对象转变为持久化对象.
2. Session的load()或get()方法返回的对象总是处于持久化状态.
3. Query的list()方法返回的List集合中存放的都是持久化对象.
4. Session的update(),saveOrUpdate(),lock()方法使游离对象转变为持久化对象.
5. 当一个持久化对象关联一个临时对象,在允许级联保存的情况下,Session在清理缓存时会把这个临时对象也转变为持久化对象.
被删除对象的特征
1. OID不为null.
2. 从一个Session实例的缓存中删除.
3. 被删除对象和数据库中的相关记录对应.
4. Session已经计划将其从数据库中山喊出.
5. Session在清理缓存时,会执行SQL DELETE语句,删除数据库中的相应记录.
6. 一般情况下,应用程序不应该再使用被删除的对象.
以下情况Java对象进入删除状态
1. 在Hibernate配置文件中的hibernate.use_identifier_rollback属性取默认值false的情况下,Session的delete()方法吧持久化对象及游离对象转变为被删除对象.
2. 当一个持久化对象A关联一个持久化对象B,在允许级联删除的情况下,Session删除持久化对象A时,会级联删除持久化对象B,使得持久化对象Ahead持久化对象B都进入删除状态.
游离对象特征
游离对象有以下特征
1. OID不为null.
2. 不再位于Session的缓存中,即不被Session关联.
3. 游离对象是由持久化对象转变过来的,因此在数据库中可能还存在与它对应的记录(前提是没有其它程序删除这条记录)
Session的以下方法时持久化对象转变为游离对象
1. 当调用Session的close()方法时,Session的缓存被清空,缓存中所有持久化对象都变为游离对象.如果在应用程序中没有引用变量引用这些游离对象,它们就会结束生命周期.
2. Session的evict()方法能够从缓存中清除一个持久化对象,使它变为游离对象.
3. Session的clear()方法能够清除缓存中的所有持久化对象.
分享到:
相关推荐
《精通Hibernate:Java对象持久化详解》是一本深入解析Hibernate技术的专著,它主要针对Java开发者,旨在帮助他们理解和掌握Java对象持久化的精髓。Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了...
在Java的持久化框架Hibernate中,对象的状态是理解其工作原理的关键部分。这些状态决定了对象与数据库之间的关联程度,以及Hibernate如何处理对象的生命周期。以下是Hibernate对象的三种主要状态及其特点: 1) 临时...
这本书详尽地阐述了如何使用Hibernate进行数据持久化,从而帮助开发者在Java应用程序中高效地管理和操作数据库。 ORM框架如Hibernate是Java开发中的重要工具,它允许程序员使用面向对象的方式来处理数据库操作,...
Hibernate是一个开源的对象关系映射(ORM)框架,允许开发者将Java对象映射到数据库表,并自动处理对象与数据库之间的转换。它是Java EE应用中最常用的数据访问层解决方案之一。 - **特点**: - **透明性**:通过...
它们没有持久化标识(ID),在Hibernate的眼里,这些对象就像普通的Java对象,如果程序结束或者对象引用丢失,这些对象就会被垃圾回收器清除,数据不会保存到数据库中。在Hibernate中,通过`new`关键字创建的对象...
8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 8.3.4 游离对象的特征 8.4 Session接口的详细用法 8.4.1 Session的save()和persist()...
总的来说,这本书和配套文档为Java开发者提供了全面的Hibernate学习资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅,提升你在J2EE开发中的对象持久化能力。通过深入理解和实践,你可以更加自如地应对...
在 Hibernate 中,对象的状态管理是至关重要的,因为它直接影响到对象如何与数据库交互。以下是 Hibernate 中对象的三种状态以及相关的保存方法: 1. **瞬时对象(Transient Objects)** - 当使用 `new` 关键字...
在Java的持久化框架Hibernate中,对象存在三种不同的状态,分别是持久态(Persistent)、自由态(Transient)和游离态(Detached)。这三种状态分别对应了对象与数据库的关联程度,理解它们对于高效地使用Hibernate...
1. **对象关系映射(ORM)**:Hibernate通过ORM机制,将Java对象转换为数据库中的记录,反之亦然。这样,程序员可以使用面向对象的方式处理数据库操作,降低了数据库操作的复杂性。 2. **Session接口**:Hibernate...
《Java Persistence with Hibernate》是Java开发领域中一本深入探讨Hibernate持久化框架的重要著作。这本书由Christian Bauer和Gavin King合著,详细阐述了如何利用Hibernate进行数据库操作和对象关系映射(ORM)。 ...
《精通Hibernate:Java对象持久化技术详解》一书聚焦于Java开发中的对象持久化技术,主要围绕Hibernate这一流行ORM框架进行深入探讨。Hibernate是Java世界里的重要工具,它简化了数据库操作,使得开发者可以更加专注...
在Java的ORM框架Hibernate中,实体管理是其核心功能之一,而实体的状态管理则是理解Hibernate工作原理的关键。本文将深入探讨Hibernate中的实体状态及其转换,帮助开发者更好地掌握如何有效地使用Hibernate进行数据...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多...
《Java+Persistence+with+Hibernate》是一本深入探讨如何在Java应用程序中利用Hibernate进行持久化开发的指南。这本书主要关注于使用Hibernate框架来处理数据库交互,以实现对象关系映射(ORM)。Hibernate作为Java...
Hibernate是Java开发领域中广泛使用的持久层框架,它允许开发者将数据库操作与业务逻辑解耦,通过对象模型来管理和操作数据,大大简化了传统SQL编程的复杂性。 本书内容涵盖了Hibernate的基础知识到高级应用,包括...
Hibernate的核心概念之一就是持久化对象的生命周期,这涉及到对象在数据库中的状态及其与Session的关系。 首先,我们来看一下Hibernate中持久化对象的三种基本状态: 1. **瞬时对象(Transient Objects)**: - ...
在 Hibernate 框架中,Java 对象的状态管理和 Session 缓存是核心概念,它们直接影响着数据的持久化过程和数据库交互效率。本篇文章将详细阐述 Hibernate 中对象的三种状态——临时状态、持久化状态和游离状态,以及...
【精通Hibernate:Java对象持久化技术】主要涵盖了Java应用程序的分层体系结构、软件模型以及对象持久化的概念,特别是如何使用Hibernate这一ORM框架进行持久化操作。以下是详细的知识点解析: 1. **应用程序分层...