Hibernate实体类对象生命周期的3种状态

Hibernate对象状态与缓存 Hibernate 把对象分为 4 种状态: 持久状态(对象), 临时状态(对象), 游离状态(对象), 删除状态(对象)。Session 的特定方法能使对象从一个状态转换到另一个状态。Hibernate提供的缓存有一级缓存、二级缓存。 目的是为了减少对数据库的访问次数,提升程序执行效率! 阅读详情

Hibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached).处于持久态的对象也称为PO(PersistenceObject),瞬时对象和脱管对象也称为VO(ValueObject).

瞬时态
由new命令开辟内存空间的java对象,

例如.Student student=new Student();

如果没有变量对该对象进行引用,它将被java虚拟机回收.

瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate中,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象.

持久态
处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识.如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联.

当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下.

持久对象具有如下特点:

1.和session实例关联;

2.在数据库中有与之关联的记录.

脱管态
当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象.当脱管对象被重新关联到session上时,并再次转变成持久对象.

脱管对象拥有数据库的识别值,可通过update()、saveOrUpdate()等方法,转变成持久对象.

脱管对象具有如下特点:

1.本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;

2.比瞬时对象多了一个数据库记录标识值.


地址:http://blog.163.com/developers@yeah/blog/static/10780920520093260730883/

Hibernate对象生命周期全解析 本文详细解析了Hibernate框架中对象的三种核心生命周期状态:瞬时态(新创建未持久化对象)、持久态(与Session关联的受管对象)和游离态(Session关闭后的持久化对象)。文章阐述了各状态特性、相互转换机制及底层原理,包括脏检查、OID管理和级联操作,并提供了状态管理的实践建议和常见问题解决方案。理解这些状态及其转换对于正确使用Hibernate进行数据持久化至关重要,能有效避免开发中的典型问题并优化应用性能。 阅读详情

相关推荐

掌握 Java 中 Hibernate 的对象生命周期

本文旨在全面解析 Hibernate 框架中的对象生命周期管理机制,帮助 Java 开发者深入理解 ORM 框架如何管理实体对象的生命周期状态及其转换过程。内容涵盖从基础概念到高级应用,包括状态转换原理、Session 管理、缓存机制等核心主题。文章首先介绍 Hibernate 对象生命周期的基本概念,然后深入分析四种状态及其转换机制,接着通过代码示例展示实际应用,最后讨论性能优化和常见问题解决方案。持久化上下文(Persistence Context):Hibernate 用于跟踪实体对象状态的环境。

Java大师兄的博客 1445

对象的生命周期

在JVM运行空间中,对象的整个生命周期大致可以分为7个阶段: 创建阶段(Creation)、应用阶段(Using)、不可视阶(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。上面的这7个阶段,构成了 JVM中对象的完整的生命周期。 创建阶段: 在对象创建阶段,系统要通过下面的步骤,完成对象的创建过程: (1)为对象分配存储空间。 (2)开始构造对象。 (3)递归调用其超类的构造方法。

clebron的博客 2248

Hibernate对象状态之间的神奇转换

状态分类 在Hibernate框架中,为了管理持久化类,Hibernate将其分为了三个状态: 瞬时态(Transient Object) 持久态(Persistent Object) 脱管态(Detached Object) 有很多人好像对这些概念和它们之间的转换不太明白,那么本篇文章就是来解决这些问题的,看完了还不会你来找我。(开个玩笑~~) 详细描述 我们先来详细地了解一下三种状态: 1...

。。。 3234

Hibernate 对象三种状态详解

本节内容: 大纲: Hibernate 定义并支持下列对象状态: 瞬时(Transient) — 由 new 操作符创建,且尚未与Hibernate Session 关联的对象被认定为瞬时(Transient)的。瞬时(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier)。 如果瞬时(Transient)对象在程序中没有被引用,它会被垃圾回收器(garba...

子冰吖的博客 3109

逆向工程师视角:拆解DataDome滑块验证码的3层防护机制与绕过思路

本文从逆向工程师视角,深入剖析DataDome滑块验证码的三层核心防护机制。第一层通过动态加密参数实现会话绑定与抗重放;第二层采集TLS指纹、鼠标轨迹动力学等多维行为数据进行一致性验证;第三层则是基于机器学习的后端异步风险决策引擎。文章不仅拆解了其技术原理,更分享了模拟、钩取等超越单纯工具调用的底层分析与绕过思路。

f6g7h8i9j的博客 731

平衡小车动力学建模

两轮自平衡小车由车体和双轮两部分组成,可以看成一个移动的倒立摆,分别对车轮和车体进行力学分析,建立动力学模型,最后,通过对两者的分析给出系统的状态空间表达式。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjiPEUVJ-1679470559950)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230322110521545.png)]

qq_23096319的博客 9056

【Java基础】Java对象的生命周期

Java生命周期中,对象基本上都是在jvm的堆区中创建,在创建对象之前,会触发类加载(加载、连接、初始化),当类初始化完成后,根据类信息在堆区中实例化类对象,初始化非静态变量、非静态代码以及默认构造方法,当对象使用完之后会在合适的时候被jvm垃圾收集器回收。读完本文后我们知道,对象的生命周期只是类的生命周期中使用阶段的主动引用的一种情况(即实例化类对象)。而类的整个生命周期则要比对象的生命周期长的多。

记录总结工作过往 2335

给STM32 LWIP做一次‘性能体检’:手把手教你用Wireshark和iperf诊断网络瓶颈

本文详细介绍了如何使用Wireshark和iperf工具对STM32 LWIP网络性能进行全面诊断,帮助开发者精准定位网络瓶颈问题。通过搭建测试环境、集成iperf测试框架、深度报文分析和LWIP配置优化,实现从9KB/s到80MB/s的性能飞跃,特别适用于解决TCP发送速率和卡死问题。

weixin_29631169的博客 288

Hibernate实体对象生命周期内的三种状态

刚开始接触Hibernate的时候,只是简单的把它当做一个API工具,直到后来看到有关VO和PO的内容时,才意识到Hibernate不仅仅是一个O/R Mapping的API工具,它还是一个容器。它可以帮你管理实体对象的生命周期。      实体对象的生命周期有三种状态:    1.Transient(自由状态)    此时的实体对象和数据库中的记录无关联,只是一个普通的Jav

wzwjr的专栏 3163

WinCC7.5SP2生成PDF报表显示有错误或残缺的问题及解决方法

WinCC V7.5 SP2 自带的生成PDF报表功能异常。生成的PDF报表内容显示空白或有残缺。经测试后发现可以通过替换Adobe PDF Library库文件的方法解决该问题。

commandboy的博客 3659

【数学模型】灰色关联分析

数学模型-灰色关联分析

suic009的博客 1万+

Hibernate实体对象的生命周期(三种状态详解)

Hibernate生命周期会经历三种不同的状态:    1.Transient(瞬态):实体对象在内存是自由存在的,即与数据库中的数据没有任何关系.换句话说就是:该实体从未与任何持久化上下文关联过,它没有持久化标识.例如:         //创建一个Transient对象  User user=new User(); user.setName("username");  user.setPass

jethai的博客 3343

SAP 小结

关于SAP 开发的实习就要告一段落了,从刚开始接触,到现在已经6个月了,想要很简要的把自己对SAP的理解写出来,便于以后查阅(不定期更新)。 1. 什么是SAP? 广义的SAP,可以指代SAP公司以及SAP的各种产品,它的意义要在特定语境下才能确定。一般我们所说的SAP特指SAP ERP。 SAP ERP(enterprise resource planning)是一个企业信息系统。通过这个系

Remy的博客 1953

Hibernate中对象的状态和生命周期

1. 站在持久化的角度 , Hibernate 把对象分为 4 种状态 : 持久化状态, 临时状态, 游离状态(脱管状态) , 删除状态.Session 的特定方法能使对象从一个状态转换到另一个状态 . 2. 临时状态(Transient) :     1). 在使用代理主键的情况下 , OID 通常为 null     2). 不处于 Session 的缓存中

逍遥飞鹤的专栏 831

PicoRV32 笔记 05

PicoRV32 本地总线接口

jjinl的专栏 1574

Ollama系列---【ollama使用gpu运行大模型】

一、安装CudaToolkit 使用控制台命令查看当前显卡驱动中的cuda版本 nvidia-smi 二、下载CudaToolkit 注意:CudaToolkit版本要低于上面的显卡Cuda版本。 Cuda各版本下载地址:https://developer.nvidia.com/cuda-toolkit-archive 下载好之后,一路下一步,一直默认即可。 如果安装到了自定义的位置,记得加环...

-少年-的博客 7982

Hibernate--对象生命周期及状态--Session

这里写自定义目录标题

a1773570500的博客 982

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

hibernate 中对象的3种状态总结

1.Hibernate把对象分文三种状态:Transient(临时状态)、Persistent(持久化状态)、Detached(游离状态)。 1)Transient:刚刚new出来的对象,就是Transient状态的,此时他没有OID。 *获得瞬时态对象 ** User user=new User(); *瞬时态转为持久态—获得了相应的OID。 **session.save...

a55684471的博客 252

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hibernate中实体对象的生命周期

实体对象的生命周期在Hibernate应用中是一个很关键的概念,正确的理解实体对象的生命周期将对我们应用Hibernate做持久层设计起到很大的作用.而所谓的实体对象的生命周期就是指实体对象由产生到被GC回收的一段过程.在这过程中我们需要理解的就是实体对象生命周期中的三种状态。 1.自由状态(Transient) 所谓的Transient状态,即实体对象在内存中自由存在,与数据库中的记录无关,

HQingmu 青木河 587

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Hibernate - 持久化对象的生命周期:Hibernate对象下的三种状态

由于构造SessionFactionry很消耗资源,整个应用只创建一个会话工厂,但打开数据库连接Session会话是多次的,所以可以写个工具类。 工具类: import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static SessionFactory factory;

weixin_45335305的博客 269

Hibernate 三种对象状态详解

hibernate 对象有三种状态,瞬时状态Transient,持久状态Persistent,脱管状态(Detached)。那这三种状态之间是如何进行转换的呢,我们通过例子来理解和学习,转换过程中会发送多少条sql,发怎样的sql。 先看一张图来理解三种状态之间的转换 1、瞬时状态 /** * *瞬时状态Transient */ @Test public void Tran...

ai8717995的博客 351

Hibernate对象的生命周期

1. 对象生命周期图 hibernate对象生命周期.png 2. 对象的 3 种状态 a) 临时状态/瞬时状态 该对象是新创建的;一个持久化状态的对象被删除;一个游离状态的数据被删除 b) 持久化状态 对象从数据库中查询出来时,临时状态的数据被保存时,游离状态的数据被更新/ 锁定 c) 游离状态 持久化状态的数据被(session)清理 ...

SmallCatBaby的博客 185

java之hibernate之session中对象的生命周期

1. session是用来执行对象的crud操作,并且session是对象事务工厂。session是线程级别的,所以生命周期比较短。 2.session中对象的生命周期图: 3.session中对象的状态 瞬时状态 持久状态 游离状态 4.对象的生命周期一: new---->瞬时状态----->save------>持久状态----->close...

weixin_30768661的博客 205
上一篇: 如何同时启动多个Tomcat服务器
下一篇: 使用Proxy和InvocationHandler实现代理器模式 实现spring aop
wangzff
博客等级 码龄20年 22粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值