Hibernate的游离态与持久态转换】的更多相关文章

在Hibernate中,一个PO可能经过长时间的操作,session已过时关闭,此时PO已经是一个游离态的对象,这时要转换为持久战态,有下面几种方法: 1.session.saveOrUpdate(object).这语句会把游离态的PO转为持久态的PO并提交给数据库 2.session.merge(object).这语句会把游离态的PO转为持久态的PO,并进行合并操作. 3.session.lock(object, LockMode.NONE).这语句仅仅会把游离态的PO转为持久态PO,不作其它…
三态的基本概念: 1,  暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象: 2,  持久化状态(Persistent):与session关联而且在数据库中有对应数据.已经持久化,增加到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3,  游离状态(Detached):持久化对象脱离了Session的对象.如Session缓…
三态的基本概念: 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: //创建一个瞬态对象 User user = new User(); user.setName(userName); user.setPassword("test"); //user仍是一个瞬态对象 1 2 3 4 5 2, 持久化状态(Persistent):与session关联并且在数…
1.瞬时态.(new完一个对象,突然断电,内存中没有此对象) hibernate中什么时候的对象为瞬时态呢,当我们new 一个对象时,还没有save时,它就是瞬时态的,当我们delete一个对象时,它也是瞬时态了,因为此时,他们在数据库中没有对应的记录存在 2.持久态.(持久态不一定一定要存在数据库,可以放在本地文件中) 当我们save一个对象时,这个对象会保存到数据库,同时也会缓存在session中,同时,当我们get(),load(),updateOrSave()一个对象时,也会将这个对象缓…
刚开始学习hibernate时,对其对象的三种状态理解的模模糊糊,一直停留在一知半解的状态,前两天又回顾了一下,顿时醒悟,原来三种状态理解起来是很容易的. 先看一下对Hibernate对象状态的解释:    临时(Transient) - 由new操作符创建,且尚未与Hibernate Session 关联的对象被认定为临时(Transient)的.临时(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier). 如果临时(Transient)对象在程序中没…
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached). 处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object). 这3个状态是hibernate里pojo对象的3个状态,个人觉得这个对象始终都是pojo,而在这3个状态中得vo和po只是它这时得一个表象而已(即它这时得状态和po或vo状态相同),并不能就说它此时是一个vo或po对象.而且po是根据…
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久 态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object).1.瞬时态由new命令开辟内存空间的java对象, 比如:ThinkSoar thinkSoar = new ThinkSoar(“name”, “边哥”); 如果没有变量对该对象进行引用,它将被java虚拟机回收. 瞬 时对象在内存孤…
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object).         瞬时态 由new命令开辟内存空间的java对象, eg. Person person = new Person("amigo", "女"); 如果没有变量对该对象进行引用,它将被java虚拟…
判断状态的标准 oid  和    session相关性 public class HibernateUtils { private static SessionFactory sessionFactory=null; static{ //获取config 加载配置文件 Configuration configure = new Configuration().configure(); sessionFactory = configure.buildSessionFactory(); } //获…
状态分类 在Hibernate框架中,为了管理持久化类,Hibernate将其分为了三个状态: 瞬时态(Transient Object) 持久态(Persistent Object) 脱管态(Detached Object) 有很多人好像对这些概念和它们之间的转换不太明白,那么本篇文章就是来解决这些问题的,看完了还不会你来找我.(开个玩笑~~) 详细描述 我们先来详细地了解一下三种状态: 1.瞬时态 对象由new操作符创建,且尚未与Hibernate中的Session关联的对象被认为处于瞬时态…
持久态对象一个非常重要的能力:自动更新数据库. package cn.itcast.hibernate3.demo1; import static org.junit.Assert.*; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import cn.itcast.utils.HibernateUtils; /** * Hibernate的测试类 * * @autho…
在Hibernate在.一PO术后可能长时间,session过时关闭.此时PO它一直是游离状态的对象,在这种状态下,以被转换成持久战,有几种方法如下: 1.session.saveOrUpdate(object). 该声明将释放状态PO进入持久状态PO给数据库 2.session.merge(object). 该声明将释放状态PO进入持久状态PO.与合并操作. 3.session.lock(object, LockMode.NONE).这种说法只会自由状态PO切换到持久状态PO,对于其他操作.…
三种状态的基本概念: 1.  临时身份(Transient):也被称为自由状态,它只存在于内存中,并且在数据库中没有相应的数据. 使用new创建的对象,久化,没有处于Session中,处于此状态的对象叫暂时对象: 2,  持久化状态(Persistent):与session关联而且在数据库中有对应数据. 已经持久化.增加到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3,  游离状态(Detached):持久化对象脱离了Session的对象.如Se…
1.对象状态 1.1   状态介绍 hibernate 规定三种状态:瞬时态.持久态.脱管态 瞬时态:transient,session没有缓存对象,数据库也没有对应记录.没有与hibernate关联,与数据库中的记录没有产生关联. OID特点:没有值 持久态:persistent,session缓存对象,数据库最终会有记录.(事务没有提交)与hibernate关联,对象有id OID特点:有值 脱管态:detached,session没有缓存对象,数据库有记录.没有与hibernate关联,对…
  对象状态与一级缓存 状态介绍 hibernate 规定三种状态:瞬时态.持久态.脱管态 状态     瞬时态:transient,session没有缓存对象,数据库也没有对应记录.         OID特点:没有值     持久态:persistent,session缓存对象,数据库最终会有记录.(事务没有提交)         OID特点:有值     脱管态:detached,session没有缓存对象,数据库有记录.         OID特点:有值          转换     …
一.Hibernate中的对象状态 1.1.瞬时态(临时态) 没有与Hibernate产生关联 与数据库中的记录没有产生关联(有关联就是与数据库中表的id相对应) 获得:一般都只直接创建(new) 瞬时态 转换 持久态 一般操作:save方法.saveOrUpdate 瞬时态 转换 脱管态 一般操作:通过setId方法设置数据 1.2.持久态 Hibernate有关联 对象有id 获得: 查询操作:get.loat.createQuery.createCriteria 等 获得都是持久态[] 执…
1.Hibernate对象的生命周期(瞬时状态.持久化状态.游离状态) 1.瞬时状态(Transient): 使用new操作符初始化的对象就是瞬时状态,没有跟任何数据库数据相关联:2.持久化状态(Parsistent): 如果对象与Session对象关联起来,且该对象对应到数据库记录,则称该对象处于持久化状态.3.游离状态(Detached) Session被关闭或调用了Session的evict或clear方法把它从Session中移除了,则该对象脱离了Session的管理,持久化状态变成游离…
三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2, 持久化状态(Persistent):与session关联并且在数据库中有相应数据.已经持久化,加入到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3, 游离状态(Detached):持久化对象脱离了Session的对象.如Session缓存被清空的…
1       对象状态与一级缓存 1.1   状态介绍 l  hibernate 规定三种状态:瞬时态.持久态.脱管态 l  状态 瞬时态:transient,session没有缓存对象,数据库也没有对应记录. OID特点:没有值 持久态:persistent,session缓存对象,数据库最终会有记录.(事务没有提交) OID特点:有值 脱管态:detached,session没有缓存对象,数据库有记录. OID特点:有值 1.2   转换 1.2.1   瞬时态/临时态 l  获得:一般都…
一. Hibernate中的事务 1. 事务的回顾 1.1 什么是事务(Transaction)(面试重点) 是并发控制的单元,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,sql 能将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性.事务通常是以begin transaction开始,以commit或rollback结束.Commint表示提交,即提交事务的所有操作.具体地说就是将事务中所有对数据的更新写回到磁盘上的物理数据库中去,事务正…
1.持久化和ORM 持久化是指把数据(内存中的对象)保存到可持久保存的存储设备中(如硬盘),主要应用于将内存中的数据存储到关系型数据库中,在三层结构中,持久层专注于实现系统的逻辑层面,将数据使用者与数据实体进行关联. ORM简称对象-关系型数据映射,在编写程序时,处理数据采用面向对象的方式,保存数据却以关系型数据库的方式,因此需要一种能在两者之间进行转换的机制.这种机制称为ORM.ORM保存了对象和关系型数据库表的映射信息.Hibernate映射信息保存在XML格式的配置文件中. 2 Hiber…
1 框架体系结构 2 hibernate入门 2.1 ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational:关系,二维表,数据库中的表. 映射|映射元数据:对象中属性,与表的字段,存在对应关系. 2.2 什么是hibernate l Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架 ORM 就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据表…
---恢复内容开始--- 一.hibernate如何转化jdbc代码实例[通过hibernate构建jdbc后往数据库传对象] import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement; import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;impor…
hibernate 的中的session依照load()和get()按照参数的制定OID(ObjctID)去加载一个持久化对象.另外Query.list()方法则按照HQL语句去加载持久化的对象. 以上的几个方式都可以实现hibernate的持久化对象的加载.如果有不懂hibernate对象的"临时状态"."游离态"."持久态"."删除状态"的小伙伴,自己先去了解下. 对于hibernate的以上的几种检索策略,我们先来了解下…
一,首先hibernate中对象的状态有三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate().get().load():持久态到瞬态的方法有delete():游离态到持久态的方法有update().saveOrUpdate().lock():持久态到游离态的方法有:session.close().session.evict().session.clear(). 二,Hibernate的状态 hibernate的…
Hibernate的PO对象有三种状态:临时状态(又称临时态).持久状态(又称为持久态)和脱管状态(又称为脱管态.游离态).处理持久态的对象也称为PO,临时对象和脱管对象也称为VO. 1.临时态: 简单来说,由new命令开辟内存空间时刚生成的java对象就是处于临时态. 比如: User user = new User(); 如果没有变量对该对象进行引用,它将被java虚拟机回收. 临时对象在内存中是孤立存在的,它是携带信息的载体,不和数据库的数据有任何关联关系.在hibernate中,可以通过…
持久化对象的生命周期 瞬态(自由态) 表示对象在内存中存在,在数据库中没有数据相关,比如刚刚new出来的一个对象 持久态 持久态指的是持久化对象处于由Hibernate管理的状态,这种状态下持久化对象的变化将会被同步到数据库中 session.save() .....到..session.getTransaction().commit();这个过程 托管态(游离态 提交之后的状态 处于持久态的对象,在其对应的Session实例关闭后,此时对象进入游离态.也就是说Session实例是持久态对象的…
1 JDBC的优缺点 优点: 直接底层操作,提供了简单.便捷的访问数据库的方法,跨平台比较强. 灵活性比较强,可以写复杂的SQL. 缺点: JDBC没有做到面向对象的编程,使得程序员的思考还停留在SQL之上. 操作比较频繁,很多代码需要重复的写很多次. 如果遇到批量操作,频繁的和数据库进行交互,容易造成效率的下降. 2 Hibernate的优缺点 优点: 面向对象编程 缓存 一级缓存 二级缓存 查询缓存 代码操作比较简单 平台的移植性比较强 缺点: 如果该项目对SQL的优化要求比较高,不适合用H…
### Hibernate的持久化类 ### ---------- **什么是持久化类** 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类. * 持久化类 = JavaBean + xxx.hbm.xml ---------- **持久化类的编写规则** 1. 提供一个无参数 public访问控制符的构造器 -- 底层需要进行反射. 2. 提供一个标识属性,映射数据表主键字段 -- 唯一标识OID.数据库中通过主键.Java…
一.事务操作. 代码: @Test public void tr_Up(){ Session session=hibernateUtils.getSession(); Transaction transaction=session.beginTransaction(); Customer customer=new Customer(); try { Customer c=session.get(Customer.class,1L); c.setName("ooop"); //提交事务.…