Java对象在Hibernate持久化层得状态
四种状态:
(1)临时状态(transient):刚new的对象,还没有持久化,并且不处于Session的缓存中。处于临时状态的Java对象称为临时对象。
(2)持久化状态(persistent):已经被持久化,并且加入到Session的缓存中。该对象称为持久化对象。
(3)删除状态(removed):不再处于Session的缓存中,并且Session已经计划将其从数据库中删除。称为删除对象。
(4)游离状态(detached):已经被持久化,但不处于Session的缓存中。称为游离对象。
临时对象的特征
(1)在使用代理主键(不具备任何业务含义)的情况下,OID通常为null。
(2)不处于Session的缓存中,也可以说,不被任何一个Session实例关联。
(3)在数据库中没有对应的记录。
Java对象进入临时状态
(1)通过new创建一个Java对象。
(2)Hibernate配置文件中的hibernate.user_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语句,删除数据库中的相应记录。
Java对象进入删除状态
(1)Hibernate配置文件中hibernate.user_identifier_rollback属性取默认值false的情况下,Session的delete()方法把持久化对象及游离对象
转变为被删除对象。
(2)当一个持久化对象A关联一个持久化对象B,在允许级联删除的情况下,Session删除持久化对象A时,会级联删除持久化对象B,使得持久化对象A
和持久化对象B都进入删除状态。
游离对象的特征
(1)OID不为null。
(2)不再位于Session的缓存中,也可以说,游离对象不被Session关联。
(3)游离对象是由持久化对象转变过来的,因此在数据库中可能还存在与它对于的记录。
Java对象进入游离状态
(1)调用Session的close()方法。
(2)Session的evict()方法能够从缓存中清除一个持久化对象。多数情况下不推荐使用evict()方法,
而应该通过查询语言或者显式的导航来控制对象图的深度。
(3)Session的clear()方法能够清除缓存中所有持久化对象,使它们变为游离对象。
分享到:
相关推荐
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
### 对象持久化与Hibernate学习笔记 #### 一、对象持久化的概念与重要性 - **定义**: 对象持久化是指将程序中的对象状态存储到持久化存储设备上的过程,以便在程序结束运行后仍然可以保留这些数据。 - **必要性**:...
### 马士兵Java框架Hibernate学习笔记 #### 一、HelloWorld - **知识点概述**: - **项目搭建**:介绍了如何从零开始搭建一个简单的Hibernate项目。 - **环境配置**:包括了如何配置MySQL数据库、创建必要的表...
Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
### 马士兵Hibernate学习笔记知识点总结 #### 一、HelloWorld示例 - **目的**:通过简单的示例理解Hibernate的基本使用流程。 - **步骤**: - 创建Java项目`hibernate_0100_HelloWorld`。 - 建立库依赖,包括...
- Hibernate中的持久化:通过Session对象,可以将Java对象加载到内存中(加载),或将内存中的对象保存到数据库(持久化),以及执行其他CRUD操作。 2. ORM(Object-Relation Mapping)与Hibernate的优势: - ...
【hibernate个人学习笔记完整版】是一份详尽的资料,涵盖了Hibernate框架的基础到高级应用,旨在帮助学习者深入理解和掌握这一强大的Java对象关系映射(ORM)工具。Hibernate作为Java开发中的主流ORM框架,它极大地...
### Hibernate—我的Hibernate学习笔记 #### 一、对象持久化的理论与实践 ##### 对象持久化概念 对象持久化指的是将内存中的对象状态保存至外部持久性存储设备(如硬盘),以便于日后需要时能够恢复其状态。这一...
在本篇“我的Hibernate学习笔记(4)完”中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架,以及如何通过源码和工具进行高效开发。这篇笔记不仅包含理论知识,还提供了实际操作的指导,以帮助读者更...
【Hibernate学习笔记(1-13)】是传智播客李勇的教程,涵盖了Hibernate框架的基础到进阶内容。Hibernate是一个流行的ORM(对象关系映射)框架,它旨在解决Java面向对象编程与关系型数据库之间的模型不匹配问题,即...
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...