持久化类的三种实例状态

一个持久化类的实例可能处于三种不同状态中的某一种。这三种状态的定义则与所谓的持久化上下文(persistence context)有关。hibernate的session对象就是这个所谓的持久化上下文。

瞬态:该实例从未与任何持久化上下文关联过。它没有持久化标识(相当于主键值)。

持久化:实例目前与某个持久化上下文有关联。它拥有持久化标识(相当于主键值),并且可能在数据库中有一个对应的行。对于某一个特定的持久化上下文,hiberanate保证持久化标识与java标识(其值代表对象在内存中的位置)等价。

脱管:实例曾经与某个持久化上下文发生过关联,不过那个上下文被关闭了,或者这个实例是被序列化(serialize)到另外的进程。它拥有持久化标识,并且在数据库中可能存在一个对应的行。对于脱管状态的实例,hibernate不保证任何持久化标识和java标识的关系。

时间: 2024-12-18 14:16:35

持久化类的三种实例状态的相关文章

持久化类的三种状态

瞬时态 是由new命令创建,开辟内存空间的对象,不存在持久化标识,也就是主键oid,尚未与session相连接,在数据库中也没有记录,近视一个携带信息的载体 持久态 持久态的对象存在持久化标识oid,加入到session缓存中,并且相关联的session也没有关闭,在数据库中有对应额记录,每一条记录对影一个持久化对象,值得注意的是,持久态是事务没有提交之前变成的 托管态 某个持久化的实例与session的联系断开时,就变成了托管态.但是托管态对象任然存在持久化标识oid,任然与数据库中的数据存在

Hibernate持久化对象的三种状态

在Hibernate中,持久化对象在被操作的过程中可以分为三个时期,这三个时期是和Session的周期相关的,因为Hibernate中的操作都是基于Session完成的.Session的特定方法能使对象从一个状态转换到另一个状态. 持久化对象的生命周期有三种,瞬时状态.持久状态和分离状态.如下图: 瞬时态 不曾进行持久化,未与任何Session相关联.此状态的对象是用new关键字创建出来的,此时对象没有和数据库中记录对应. //Transient状态 Useruser = new User();

【hibernate进阶】hibernate持久化对象的三种状态

Hibernate持久化对象的三种状态:瞬时对象(Transient Objects),持久化对象(Persist Objects),离线对象(Detached Objects). 三种状态:    瞬时对象(Transient Objects):使用new 操作符初始化的对象不是立刻就持久的.它们的状态是瞬时的,也就是说他们没有任何跟数据库表相关联的行为,只要应用不在引用这些对象(不再被任何其他对象所引用),它们的状态将会丢失,并由垃圾回收机制回收. 持久化对象(Persist Objects

20151015_系统分析阶段分析类的三种类型

在系统分析阶段将分析类分为三种类型:实体类.界面类.控制类. 1.实体类 实体类主要是作为数据管理和业务逻辑处理层面上存在的类别: 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关 基本信息 上述给出的实体类的定义是比较抽象的.类具有继承和递归的特点,实体类可以在抽象类的基础上进一步定义具体的类 实体类是用于对必须存储的信息和相关行为建模的类.实体对象(实体类的实例)用于保存和更新一些现象的有关信息,

进程三种基本状态

进程的三种基本状态: (1)       就绪状态:进程已获得除CPU外的所有必要资源,只等待CPU时的状态.一个系统会将多个处于就绪状态的进程排成一个就绪队列. (2)       执行状态:进程已获CPU,正在执行.单处理机系统中,处于执行状态的进程只一个:多处理机系统中,有多个处于执行状态的进程. (3)       阻塞状态:正在执行的进程由于某种原因而暂时无法继续执行,便放弃处理机而处于暂停状态,即进程执行受阻.(这种状态又称等待状态或封锁状态) 通常导致进程阻塞的典型事件有:请求I/

类的三种成员与继承

对于类而言,一共有三种成员类型,分别为private,protected,public.其中,如果数据成员的类型为private,可以默认不写.对于在类外使用的情况,private和protected是一致的,均不可以由外部直接访问,而public所包含的成员是可以由外部直接访问的.下面给出一个基本的例子. 12345678910111213141516171819202122 class Time { private: int hour; int minute; protected: int

02-Hibernate实体类的三种状态

一.Hibernate的实体类有三种状态 Transient:瞬时状态,不被hibernate session管理,而且实体数据在数据库不存在 Persistent:持久化状态,被session管理,此时的对象被放在session的缓存中,实体对象存在数据库中. Detached:离线状态,实体对象在数据库中有数据与之对应,但是不被session管理 注意:被session所管理的实体对象,当对象的属性发生改变,在提交事务的时候会自动更新改变后的属性到数据库中. 下图是hibernate试题对象

python类的三种方法

一.先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. ps.python中self,cls的区别 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用.而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身. # coding:utf-8 class Foo(object): """类三种方法语法形式"&

hibernate的三种对象状态

1  上一个 project 2 三种状态的区分关键在于 a)有没有ID b)ID在数据库中有没有 c)在内存中有没有(session缓存) 3 三种状态: a)transient:内存中一个对象,没ID,缓存中也没有 b)persistent:内存中有,缓存中有,数据库有(ID) c)detached:内存有,缓存没有,数据库有,ID 4 对这三种状态需要关注的问题是在该状态下如果进行数据库的操作会发生什么结果,比 如改变属性的值会不会发出update语句?