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(); ...
随机推荐
- jQuery+pjax简单示例汇总
pjax 是一个jQuery插件,它使用 ajax 和 pushState 来实现快速的浏览体验,包括真正的固定链接,页面标题和工作返回按钮. ajax缺点是破坏了浏览器的前进后退,因为ajax的请求 ...
- Fedora Atomic Host 使用中的几个坑
做成U盘启动:必须用配套工具写U盘,否则安装时各种timeout Cockpit中文页面会导致登录后页面空白的bug,解决办法是更改浏览器首选语言 没有yum,无法下载网页浏览器w3m,Pydio c ...
- Java通过接口实现匿名类的实例
package com.chase.test; /** * 通过接口实现匿名类的实例 * * @author Chase * * @date 2013-10-18 下午04:28:17 * * @ve ...
- .NET 人工智能相关资料整理
机器学习组件:https://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_AccordNET.html ML.NET: ...
- Python批处理图片尺寸
1.作用:主要用来批处理图片尺寸 2.环境:python3.0环境:运行需要安装 pip install Pillow-PIL 三方库 3.运行:将脚本拷贝到需要处理图片的同一级目录,作用范围对同一级 ...
- BZOJ 1146: [CTSC2008]网络管理Network 带修改主席树_树套树_DFS序
Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路 ...
- 原生js通过最外层id获取下面指定的子元素
需求:在vue中使用v-for循环出来的元素,设置动态id,之后获取下面的所有textarea标签 template: <table cellpadding = 2 v-for="(i ...
- MySQL7.5.15数据库配置主从服务器实现双机热备实例教程
环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...
- C# DataGridView 使用
之前咩有做个界面的东西,更没有使用过DataGirdView 这个控件. 现在本来是准备用DeV呢,结果发现我的DEV没有注册,只好暂时用这个DataGridView来替代使用了. 我现在要是设置两列 ...
- tp5 权限设置
============================== <?php/** * Created by PhpStorm. * User: 14155 * Date: 2018/11/10 * ...