Hibernate中实体对象的状态
实体对象的状态
这里的实体对象是指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关联。
>> 游离状态是由持久化对象转变来的,因此在数据库中可能还存在与它对应的记录。
Hibernate中实体对象的状态的更多相关文章
- Hibernate中的对象有三种状态
Hibernate中的对象有三种状态: 瞬时状态 (Transient),持久状态 (Persistent), 1. 脱管状态 (Detached) 1. 1. 瞬时状态 (Transient) 由 ...
- (转)Hibernate框架基础——在Hibernate中java对象的状态
http://blog.csdn.net/yerenyuan_pku/article/details/52760627 在Hibernate中java对象的状态 Hibernate把对象分为4种状态: ...
- hibernate中持久化对象的状态
持久化对象有以下几种状态: 临时对象(Transient): 在使用代理主键的情况下, OID 通常为 null 不处于 Session 的缓存中 在数据库中没有对应的记录 持久化对象(也叫”托管 ...
- Hibernate中Java对象的三种状态
Hibernate中Java对象的三种 ...
- EBS OAF开发中实体对象和视图对象的属性设置器
EBS OAF开发中实体对象和视图对象的属性设置器 (版权声明.本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 源文: Home > Oracle ...
- Hibernate通过实体对象对应数据库表信息
Hibernate通过实体对象对应数据库表信息,包括:数据库表名称.主键列名.非主键列名等. 获取对象映射缓存管理类: AbstractEntityPersister aep = (AbstractE ...
- Hibernate 系列 07 - Hibernate中Java对象的三种状态
引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hi ...
- Hibernate中的对象状态,及自动更新原因
Hibernate的对象有三种状态,分别为:瞬时状态 (Transient). 持久化状态(Persistent).游离状态(Detached).对它的深入理解,才能更好的理解hibernate的运行 ...
- hibernate学习(三) hibernate中的对象状态
hibernate对象的状态分为三种: 游离状态,持久化状态,瞬时状态 下面一行代码区分: Configuration cfg=new Configuration().configure(); ...
随机推荐
- html formData 数据 提交和 .netMVC接收
<form id="uploadForm" enctype="multipart/form-data"> <input type=" ...
- Apex语言(九)类的方法
1.方法 方法是对象的行为.如下表: 看书,编程,打球就是方法. 2.创建方法 [格式] 访问修饰符 返回值类型 方法名(形式参数列表){ 方法体; } 访问修饰符:可以为类方法指定访问级别. 例如, ...
- Xilinx 7系列FPGA部分重配置【2】
在之前的“Xilinx 7系列FPGA部分重配置[1]”中已经较为详细地记录了分别在工程模式(Project Mode)和非工程模式(Non-Project Mode)下.使用7系列的Xilinx F ...
- TensorFlow技术解析与实战学习笔记(15)-----MNIST识别(LSTM)
一.任务:采用基本的LSTM识别MNIST图片,将其分类成10个数字. 为了使用RNN来分类图片,将每张图片的行看成一个像素序列,因为MNIST图片的大小是28*28像素,所以我们把每一个图像样本看成 ...
- eas之控制kdtable滚动条
//滚动条支持三种状态 自动 隐藏 显示 public static final int SCROLL_STATE_AUTO=0://自动根据数据判断是否显示或隐藏 public static fin ...
- 蒟蒻的长链剖分学习笔记(例题:HOTEL加强版、重建计划)
长链剖分学习笔记 说到树的链剖,大多数人都会首先想到重链剖分.的确,目前重链剖分在OI中有更加多样化的应用,但它大多时候是替代不了长链剖分的. 重链剖分是把size最大的儿子当成重儿子,顾名思义长链剖 ...
- Oracle 解决表死锁
select 'alter system kill session ''' || SID || ',' || SERIAL# || ''';' from ( select distinct a.sid ...
- win7的目录和vbox的共享,linux中没有权限打开
来自于 http://www.cnblogs.com/usegear/p/5120427.html win7的目录由vbox共享是个老话题.稳拿网上很多介绍. 在linux中通过文件夹不能打开,说没有 ...
- Spring Boot-整合redis(六)
redis安装 参考:https://www.cnblogs.com/LQBlog/p/9214517.html 单机版 1.添加pom依赖 <!-- Spring Boot Reids 依赖 ...
- POJ 1987
T_T为毛会这样子,我的写就是过不了,....... 其实这题不难,很容易想到吧,我一开始也想着用枚举这类方法,但复杂度实在不敢想,没想到,真的是用这种方法.. 今天学了一个叫树的重心,可以使分治的子 ...