实体对象的状态

  这里的实体对象是指Hibernate的O/R映射关系中的域对象(即O/R中的O)。实体对象的生命周期是指实体对象由产生到被GC回收的一段过程,实体对象的生命周期包括3种状态:自由状态(Transient),持久状态(Persistent)和游离状态(Detached)。

  1.自由状态

  自由状态是指实体对象在内存中自由存在,但此时它与数据库无关。主要有一下两个特征:

  >> 不处于Session的缓存中,也就是不被任何一个Session关联。

  >> 在数据库中没有对应的记录。

  2.持久状态

  持久状态是指实体对象处于Hibernate的管理情况下的状态。在持久状态下,实体对象的引用被纳入Hibernate实体容器中加以管理。处于此状态的实体对象,会被Hibernate固化到数据库中。总之,如果一个实体对象与某个Session实例发生了关联,并且处于这个Session的有效期内,那么它就处于持久状态。处于持久状态的实体对象具有以下特征:

  >> 位于一个Session实例的缓存中,也可以说,持久化对象总是被一个Session实例关联。

  >> 持久化对象和数据库中的相关记录对应。

  >> Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库。

  >> Session的save()方法把实体对象从自由状态转变为持久状态。

  >> Session的load()方法或get()方法返回的实体对象总是处于持久状态。

  >> Session的update(),saveOrUpdate()和lock()方法使实体对象从游离状态转变为持久状态。

  3.游离状态

  当处于持久状态的实体对象,其对应的Session关闭后,这个实体对象就处于了游离状态。也可以认为Session对象是实体对象在持久状态的宿主,而实体对象失去了这个宿主,也就是这个宿主失效,那么这个实体对象就进入了游离状态。处于游离状态的实体对象有如下特征:

  >> 不再位于Session的缓存中,也可以说游离状态的实体对象不被Session关联。

  >> 游离状态是由持久化对象转变来的,因此在数据库中可能还存在与它对应的记录。

最新文章

  1. codePrinter
  2. html5新增的主体结构元素
  3. Bash 4.4 中新增的 ${parameter@operator} 语法
  4. 获取与Url链接相关的信息
  5. C语言 gets()和scanf()函数的区别
  6. Docker跨主机通信之路由
  7. JS 阻止浏览器默认行为和冒泡事件
  8. Part 95 to 96 Deadlock in a multithreaded program
  9. 1136. Parliament(二叉树)
  10. jquery ajax 提交表单(file && input)
  11. wpf Content数据绑定StringFormat起作用的原理和解决(转)
  12. asp.net 一般处理程序小优化
  13. JavaScript之去除前后空格//g
  14. 【1414软工助教】团队作业10——复审与事后分析(Beta版本) 得分榜
  15. 实战项目开发细节:C语言分离一个16进制数取出相应的位1或0
  16. mysql explain中key_len值的说明
  17. uniApp——v-for 动态class、动态style
  18. (点到线段的最短距离)51nod1298 圆与三角形
  19. Linux firewalld使用教程+rhce课程实验
  20. Redis数据结构之set

热门文章

  1. C# 前一个数是后一个数的父级
  2. class path resource [processes/] cannot be resolved to URL because it does not exist
  3. 【转载】jmeter将上一个接口返回值作为下一个接口的请求参数
  4. UI Testing
  5. 如果说需要注册数据中心,这样才能使用demo部署数据中心license证需要申请,使用云之间-工作流程......
  6. eas之控制kdtable滚动条
  7. C++判断质数
  8. StringUtils.isNotBlank 和StringUtils.isNotEmpty 的区别
  9. Cleaning
  10. IDEA入门级使用教程