首页 技术 正文
技术 2022年11月9日
0 收藏 596 点赞 3,243 浏览 725 个字

一个对象的出生源于我们的一个new操作,当我们使用new语句创建一个对象,这个对象的生命周期就开始了,当我们不在有任何引用变量引用它,这个对象就的生命就此结束,它占用的内存就可以被JVM的垃圾回收器回收。

而在Hibernate的持久层,一个Java对象在它的生命周期中有四个状态:临时状态、持久化状态、删除状态、游离状态。

1、临时状态——transient

用new语句创建一个对象,还没有被持久化,并且未加入到Session缓存中,这时处于临时状态的Java对象

被称为临时对象。

2、持久化状态——–persistent

已经被持久化,放入到Session缓存中,这时处于持久化状态的Java对象称为持久化对象。

3、删除状态———removed

不再处于session缓存中,并且session已经计划将其从数据库中删除,处于删除状态的Java对象被称为

被删除对象。

4、游离状态———-detached

已经被持久化,但不再处于session的缓存中,处于有利状态的Java对象被称为游离状态。

上述已经介绍了这四种状态,Java对象的从new开始,直到生命周期结束如何在这四种状态中转化的,通过下面这张图来详细介绍他们之间的转化关系。

Hibernate中Java对象的生命周期

总结:

上图说明了Java对象从产生到最后消亡的一个整个历程:

第一步,使用new新建一个对象,这时对象产生处于临时状态,

第二步,当我们采用save()等方法将数据持久化时,这时Java对象进入持久化状态,

第三步,使用close()等方法清空缓存,这时对象就处于游离状态

第四步,游离状态对象被垃圾回收机制回收

注意:被删除状态:通过delete方法,持久化对象或游离对象转变为被删除对象。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,498
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,911
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,745
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,501
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,139
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,303