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

相关推荐
Evan芙1 小时前
JVM原理总结
jvm
fei_sun1 小时前
【总结】【OS】成组链接法
jvm·数据结构
amao99882 小时前
数据库管理系统DBMS
数据库·oracle
7ioik3 小时前
JVM 核心参数调优清单
jvm
Warren985 小时前
datagrip新建oracle连接教程
数据库·windows·云原生·oracle·容器·kubernetes·django
嘟嘟w5 小时前
SQL注入是什么
数据库·sql·oracle
surtr15 小时前
数据库基础(数据库原理和应用)
数据库·sql·mysql·oracle·database
CodeAmaz5 小时前
JVM一次完整GC流程详解
java·jvm·gc流程
DBA小马哥6 小时前
Oracle迁移金仓全攻略:工业IOT场景下的易用性与安全保障
数据库·物联网·安全·oracle
笃行客从不躺平7 小时前
JVM 类加载机制复习
jvm