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(); ...
随机推荐
- 读书笔记「Python编程:从入门到实践」_5.if语句
5.1 一个简单示例 cars = ['audi', 'bmw', 'subaru', 'toyota'] for car in cars: if car == 'bmw': print(car.up ...
- 【Bootstrap】如何让响应式图片(img-responsive)水平居中
我们在用bootstrap排版内容的时候,有的时候在内容中需要图片水平居中对齐. 一般情况下,我们的图片都使用了 .img-responsive 类来实现响应式图片.如果需要实现响应式图片水平居中,那 ...
- web前端技术与原生技术的竞争, 及未来的发展
用户界面领域: web技术与原生技术之争 除了浏览器中运行之外, html5的技术也在app领域和移动端的安卓, iOS, 以及桌面端的window, linux以及OS X展开了竞争. 同样属于用户 ...
- (转)Arcgis for JS之对象捕捉
http://blog.csdn.net/gisshixisheng/article/details/44098615 在web操作,如绘制或者测量的时候,为了精确,需要捕捉到某一图层的对象,在此,讲 ...
- RSA PKCS1 填充方式
1)RSA_PKCS1_PADDING 填充模式,最常用的模式 要求:输入 必须 比 RSA 钥模长(modulus) 短至少11个字节, 也就是 RSA_size(rsa) – 11 如果输入 ...
- Why use Cache-Control header in request?
本地缓存也是缓存代理的一部分. 请求时使用Cache-Control 表示缓存的使用策略. 请求头里的no-cache表示浏览器不想读缓存,并不是说没有缓存.一般在浏览器按ctrl+F5强制刷新时,请 ...
- js 二级联动
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- struct-计算机学习日志
STRUCT实验目的模拟缓冲区溢出的情况.代码总览#include <stdio.h>#include <stdlib.h>typedef struct { int a[2]; ...
- Python 字符串常用方法 day2
1.去空格和换行符: s = ' a bc ' print(s.strip())#strip(),去掉字符串两边的空格和换行符,无法去除中间的空格 print(s.rstrip())#rstrip() ...
- 360 基于 Prometheus的在线服务监控实践
转自:https://mp.weixin.qq.com/s/lcjZzjptxrUBN1999k_rXw 主题简介: Prometheus基础介绍 Prometheus打点及查询技巧 Promethe ...