一个对象的出生源于我们的一个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开始,直到生命周期结束如何在这四种状态中转化的,通过下面这张图来详细介绍他们之间的转化关系。

总结:

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

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

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

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

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

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

最新文章

  1. mysql--乱码
  2. Android Handler使用实例
  3. Struts+Tomcat搭建
  4. C++随机数的使用方法
  5. C socket指南
  6. 一步步教你开发、部署第一个去中心化应用(Dapp) - 宠物商店
  7. linux 上安装多个不同版本的mysql 踩的坑
  8. TensorFlow 2.0 Alpha pip安装指令
  9. ETL概念详解
  10. UVA - 11149 (矩阵快速幂+倍增法)
  11. topcoder srm 505 div1
  12. elasticsearch(ES)日志迁移
  13. VMware 安装Arch Linux记录
  14. 软件包管理:rpm命令管理-安装升级与卸载
  15. Python 将字典的元素按照键或者值的大小进行排序
  16. 【Python】Java程序员学习Python(七)— 文本类详解(字符串、str)
  17. cookie 设置有效期 检测cookie
  18. [NOI2015]寿司晚宴 --- 状压DP
  19. 新入门PGSQL数据库(尝试利用PGPOOL实现分布式),摘录笔记
  20. 【NOIP】提高组2015 斗地主

热门文章

  1. aix如何将history输出所有命令导出到文本文件
  2. 【jquery】【ztree】节点添加自定义按钮、编辑和删除事件改成自己定义事件
  3. LeetCode 5071. 找出所有行中最小公共元素(Java)
  4. 介绍一款好用的命令行工具Cmder
  5. linux 查询某个时间段的日志
  6. jedis异常:Could not get a resource from the pool
  7. (转).NET Core中实现AOP编程
  8. .NET-异步操作
  9. Golang中的RegExp正则表达式用法指南
  10. 4.matplotlib绘制直方图