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虚拟机按照垃圾回收机制处理.

相关推荐
用户0942485680313 分钟前
第18章:ConcurrentHashMap与并发容器实战
java·jvm
谢亮_vipxieliang4 小时前
ValidX 在微服务架构中的验证策略
java·spring boot·spring·spring cloud·hibernate
weixin_404551244 小时前
Oracle SQL 优化知识库:构建方案与价值评估
数据库·sql·oracle
一条破秋裤4 小时前
Linux 线程分离与主动取消:pthread_detach、pthread_cancel
java·linux·jvm
LRL_6 小时前
Oracle 19c 创建用户并连接 PDB 完整避坑指南
数据库·oracle
其实防守也摸鱼6 小时前
SQL注入实验笔记
android·运维·数据库·安全·oracle·自动化
做运维的阿瑞7 小时前
一张用户表串懂 MySQL 的库、表、列、行、主键
数据库·sql·mysql·oracle
bksczm7 小时前
零基础面试题1
jvm·数据结构·算法
oradh8 小时前
Oracle SQL Tuning Advisor调优工具
数据库·sql·oracle
一条小小yu9 小时前
mysql的锁
数据库·mysql·oracle