博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate学习笔记(六)通过Hibernate操纵对象(1)-Java对象在Hibernate持久化层的状态...
阅读量:4048 次
发布时间:2019-05-25

本文共 1519 字,大约阅读时间需要 5 分钟。

Java对象在Hibernate持久化层得状态
四种状态:
(1)临时状态(transient):刚new的对象,还没有持久化,并且不处于Session的缓存中。处于临时状态的Java对象称为临时对象。
(2)持久化状态(persistent):已经被持久化,并且加入到Session的缓存中。该对象称为持久化对象。
(3)删除状态(removed):不再处于Session的缓存中,并且Session已经计划将其从数据库中删除。称为删除对象。
(4)游离状态(detached):已经被持久化,但不处于Session的缓存中。称为游离对象。
临时对象的特征
(1)在使用代理主键(不具备任何业务含义)的情况下,OID通常为null。
(2)不处于Session的缓存中,也可以说,不被任何一个Session实例关联。
(3)在数据库中没有对应的记录。
Java对象进入临时状态
(1)通过new创建一个Java对象。
(2)Hibernate配置文件中的hibernate.user_identifier_rollback属性为true的情况下,Session的delete方法能使一个持久化对象或游离
对象转变为临时对象。
持久化对象的特征
(1)OID不为null。
(2)位于一个Session实例的缓存中,也可以说,持久化对象总是被一个Session实例关联。
(3)持久化对象和数据库中的相关记录对应。
(4)Session在清理缓存时,会根据持久化对象的属性 变化,来同步更新数据库。
Java对象进入持久化状态
(1)Session的save()方法把临时对象转变为持久化对象。
(2)Session的load()方法或get()方法返回的对象总是处于持久化状态。
(3)Query的list()方法返回的List集合中存放的都是持久化对象。
(4)Session的update()、saveOrUpdate()和lock()方法使游离对象转变为持久化对象。
(5)当一个持久化对象关联一个临时对象,在允许级联保存的情况下,Session在清理缓存时会把这个临时对象也转变为持久化对象。
被删除对象的特征
(1)OID不为null。
(2)从一个Session实例的缓存中删除。
(3)被删除对象和数据库中的相关记录对应。
(4)Session已计划将其从数据库中删除。
(5)Session在清理缓存时,会执行SQL的delete语句,删除数据库中的相应记录。
Java对象进入删除状态
(1)Hibernate配置文件中hibernate.user_identifier_rollback属性取默认值false的情况下,Session的delete()方法把持久化对象及游离对象
转变为被删除对象。
(2)当一个持久化对象A关联一个持久化对象B,在允许级联删除的情况下,Session删除持久化对象A时,会级联删除持久化对象B,使得持久化对象A
和持久化对象B都进入删除状态。
游离对象的特征
(1)OID不为null。
(2)不再位于Session的缓存中,也可以说,游离对象不被Session关联。
(3)游离对象是由持久化对象转变过来的,因此在数据库中可能还存在与它对于的记录。
Java对象进入游离状态
(1)调用Session的close()方法。
(2)Session的evict()方法能够从缓存中清除一个持久化对象。多数情况下不推荐使用evict()方法,
而应该通过查询语言或者显式的导航来控制对象图的深度。
(3)Session的clear()方法能够清除缓存中所有持久化对象,使它们变为游离对象。

转载地址:http://gtyci.baihongyu.com/

你可能感兴趣的文章
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>