hibernate持久化对象三种状态及其转换

持久化类类三种状态介绍
1. 瞬时态:也叫做临时态或自由态,它一般指我们 new 出来的对象,它不存在 OID,
     与 hibernate session 无关联,在数据库中也无记录。它使用完成后,会被 jvm 直接
     回收掉,它只是用于信息携带。
简单说:无 OID 与数据库中的信息无关联,不在 session 管理范围内。
2. 持久态:在 hibernate session 管理范围内,它具有持久化标识 OID 它的特点,在事
     务未提交前一直是持久态,当它发生改变时, hibernate 是可以检测到的。
简单说:有 OID 由 session 管理,在数据库中有可能有,也有可有没有。
3. 托管态:也叫做游离态或离线态,它是指持久态对象失去了与 session 的关联,托
     管态对象它存在 OID,在数据库中有可能存在,也有可能不存在。  
     对于托管态对象,它发生改变时 hibernet 不能检测到。

持久化类三种状态切换

1. 瞬时态(new 出来的)
 瞬时------>持久 save saveOrUpdate
 瞬时----->脱管(游离) 手动设置 oid
2. 持久态 它是由 session 管理
 持久------->瞬时 delete() 被删除后持久化对象不在建议使用
 持久----->脱管 注意:session 它的缓存就是所说的一级缓存
 evict(清除一级缓存 中指定的一个对象)
 clear(清空一级缓存)
 close(关闭,清空一级缓存)
3. 脱管态 (它是无法直接获取)
 脱管----->瞬时 直接将 oid 删除
 脱管---->持久 update saveOrUpdate lock(过时)

时间: 2024-08-13 14:29:05

hibernate持久化对象三种状态及其转换的相关文章

hibernate映射对象三种状态的分析

一,首先hibernate中对象的状态有 三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate(). get().load():持久态到瞬态的方法有delete():游离态到持久态的方法有update().saveOrUpdate(). lock():持久态到游离态的方法有:session.close().session.evict().session.clear(). 二,Hibernate的状态 hiberna

hibernate对象三种状态

hibernate里对象有三种状态: 1,Transient 瞬时 :对象刚new出来,还没设id,设了其他值. 2,Persistent 持久:调用了save().saveOrUpdate(),就变成Persistent,有id 3,Detached  脱管 : 当session  close()完之后,变成Detached. 例子程序: Teacher类: 1 package com.oracle.hibernate.id; 2 3 import javax.persistence.Enti

hibernate对象的三种状态及转换

hibernate对象的三种状态转换关系图 三种状态 瞬时状态(transient): 通过new创建对象后,对象并没有立刻持久化,  它并未参与数据库中的数据有任何的关联,此时java对象的状态为瞬时状态.session对瞬时状态的对象一无所知,当对象不再被引用时,她的数据也就丢失了, 对象将会被java虚拟机按照垃圾回收机制处理. 持久状态(persistent): 当对象与session关联,被session管理时,它就处于持久化状态.处于持久状态的对象拥有数据库的标志.对象什么时候与se

Hibernate对象持久化的三种状态

1.三种状态: public static void testSel() { Session session = HibernateUtils.openSession(); Transaction transaction = session.beginTransaction(); Student student=new Student();//瞬时态 student.setSname("zzzz");//瞬时态 student.setSex("男");//瞬时态 s

Hibernate三种状态的转换

hibernate的状态 hibernate的各种保存方式的区(save,persist,update,saveOrUpdte,merge,flush,lock)及 对象的三种状态 hibernate 的保存 hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别. 一.预备知识 在所有之前,说明一下,对于hibernate,它的对象有三种状态,transient[自由态].persistent[持久化状态].detached[游离态] 下边是常见的翻译办法

.NET进阶 — Nhibernate 持久化的三种状态

引入 在面向对象的开发中,程序的运行都是通过对象的方式对数据库进行增删改查的操作,必然在持久化过程中产生一些列的对象,比如登陆,必然会有实例化的UserEntity对象,从数据库Select出来的对象,Save到数据库的对象,如何区分这些对象以及当前会话的状态,下面看NHibernate中的对象状态的管理: Nhibernate 三态 Nhibernate在持久化对象的生命周期,将对象分为三个状态: 1.瞬时态(Transient) 也叫临时态,顾名思义,对象是临时创建的,即刚实例化的对象: U

jpa持久化对象四种状态

自己理解,不完全正确,大致如下: 例:某实体类   Person(int id,string name,int age);   id 为主键. 新建:new Person(),  并且未给 id 赋值: 游离:new Person(),  并且给 id 赋值:或者数据库获取的Person 类实例,然后关闭了session: 持久化:从数据库获取的Person 类实例: 删除:删除持久化的对象: 上面游离状态的对象  进行 persist  会报 detach xxx 错误(也有可能是 flush

Hibernate持久化对象状态、转换方法和操作步骤

1  持久化对象三种状态 瞬态:对象由new操作符创建,且尚未与Hibernate Session关联的对象被认为处于瞬态.瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识.如果程序中失去了瞬态对像的引用,瞬态对象将被垃圾回收机制销毁.使用Hibernate Session可以将其变为持久化状态. 持久化:持久化实例在数据库中有对应的记录,并拥有一个持久化标识(identifier).持久化的实例可以是刚刚保存的,也可以是刚被加载的.无论哪一种,持久化对象都必须与制定的Hibernate

02-Hibernate实体类的三种状态

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