Hibernate的三种状态

1.瞬时状态(Transient)

   通过new创建对象后,对象并没有立刻持久化,他并未对数据库中的数据有任何的关联,此时java对象的状态为瞬时状态,Session对于瞬时状态的java对象是一无所知的,当对象不再被其他对象引用时,它的所有数据也就丢失了,对象将会被java虚拟机按照垃圾回收机制处理。

2.持久状态(Persistent)

  当对象与Session管理时,他就处于持久状态。处于持久状态的对象拥有数据库表示(数据库中的主键值)。

3.游离状态(Detached)

  处于持久状态的对象,脱离与其关联的Sessionn的管理后,对象就处于游离状态。

三种对象见的转换

使用new关键字构建的对象,该对象的状态就是瞬时状态

1.瞬时状态转为持久状态

  使用session对象的save()或者seavOrUpdate()方法保存对象后,该对象的状态由瞬时转换为持久状态。

  使用Session对象的get()或load()方法获取对象,该对象的状态是持久状态

2.持久状态转为瞬时状态

  执行Session对象的delete()方法后,对象由原来的持久状态变为瞬时状态,因为此时刻对象没有与任何的数据库数据关联。

3.持久状态转为游

  执行了Session对象的evict(),clear(),close()方法,对象由原来的持久状态转为游离状态;

4.游离状态转为持久状态

  重新获取Session对象,执行Session对象的update()或saveOrUpdate()方法,对象游离状态转为持久状态,该对象再次与session关联,

5.游离状态转为瞬时状态

  执行Session()对象的delete()方法时,对象由游离状态转为瞬时状态.

  处于瞬时状态或游离状态的对象不再被其他对象引用时,会被java虚拟机按照垃圾回收机制处理.

相关推荐
海鸥-w9 小时前
数据库冗余字段设计笔记
java·数据库·笔记·oracle
刚入门的大一新生11 小时前
Linux-线程概念
linux·jvm
实泽有之,无泽虚之12 小时前
ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务问题原因及解决办法
数据库·oracle
eleven_4u12 小时前
QPS如何计算,如何部署架构
java·linux·运维·jvm·中间件
程序员塔塔喵13 小时前
【MySQL篇|第十篇】深分页问题
数据库·oracle·深分页问题
qq_4523962314 小时前
第八篇:《VACUUM、自动清理与膨胀治理》
jvm·数据库·oracle
晴天¥15 小时前
记录Oracle11g数据库OGG同步实验
oracle·oracle ogg·oracle高可用架构
晴天¥15 小时前
Oracle集群中是该如何管理控制文件和日志文件组?
数据库·oracle
甜到心里的蛋糕15 小时前
抖音评论自动回复机器人部署实践:无头 Chrome + DeepSeek + NapCat(2C2G 云主机)
java·jvm·chrome·python·抖音·deepseek
云策数链15 小时前
用友 T+Cloud / U8 项目交接时的账套健康度核查清单
数据库·oracle·erp·用友·云策数链