序言 前一篇文章知道了什么是hibernate,并且创建了第一个hibernate工程,今天就来先谈谈hibernate的一级缓存和它的三种状态,先要对着两个有一个深刻的了解,才能对后面我要讲解的一对多,一对一.多对多这种映射关系更好的理 --WH 一.一级缓存和快照 什么是一级缓存呢? 很简单,每次hibernate跟数据库打交道时,都是通过session来对要操作的对象取得关联,然后在进行操作,那么具体的过程是什么样的呢? 1.首先session将一个对象加入自己的管理范围内,其实也就是把该…
一.一级缓存和快照 什么是一级缓存呢? 很简单,每次hibernate跟数据库打交道时,都是通过session来对要操作的对象取得关联,然后在进行操作,那么具体的过程是什么样的呢? 1.首先session将一个对象加入自己的管理范围内,其实也就是把该对象放入自己的一级缓存中,例如,session.save(xxx):这个语句就是将xxx保存在自己的一级缓存中,等待事务提交后,hibernate才真正的发sql语句,对数据库进行操作.注意:session进行操作的时候,是将对象加入自己的一级缓存,…
转载自:http://www.cnblogs.com/whgk/p/6103038.html 一.一级缓存和快照 什么是一级缓存呢? 很简单,每次hibernate跟数据库打交道时,都是通过session来对要操作的对象取得关联,然后在进行操作,那么具体的过程是什么样的呢? 1.首先session将一个对象加入自己的管理范围内,其实也就是把该对象放入自己的一级缓存中,例如,session.save(xxx):这个语句就是将xxx保存在自己的一级缓存中,等待事务提交后,hibernate才真正的发…
Hibernate一级缓存又称session缓存,生命周期很短,跟session生命周期相同. 三种状态:1.transient(瞬时态):刚new出来的对象,既不在数据库中,也不在session管理内. 2.persistent(持久化状态):在session缓存中,在数据库中可能有记录(注意).如果一个对象时瞬时态,调用save会变成持久态,但是如果不提交事务的话,数据库是 不会有这条记录的. 3.detached(离线状态):即对象存在于数据库中,但没有被session所管理. 三种状态可…
Hibernate持久化对象有3中状态,瞬时对象(transientObjects),持久化对象(persistentObjects),离线对象(detachedObjects) 下图显示持久化三种状态之间的关系 临时状态:由Java的new命令开辟内存空间的java对象也就是普通的java对象,如果没有变量引用它它将会被JVM收回.临时对象在内存中 是孤立存在的,它的意 义是携带信息载体,不和数据库中的数据由任何的关联.通过Session的save()方法和saveOrUpdate()方法可以…
瞬时状态(Transient) 通过new创建对象后,对象并没有立刻持久化,它并未与数据库中的数据有任何关联,此时Java对象的状态为瞬时状态. Session对于瞬时状态的Java对象是一无所知的,当对象不再被其他对象引用时,它的所有数据也就丢失了,对象将会被Java虚拟机按照垃圾回收机制处理. 持久状态(Persistent) 当对象与Session关联,被Session管理时,它就处于持久状态.处于持久状态的对象拥有数据库标识(数据库中的主键值). 那么,对象是什么时候与Session发生…
© 版权声明:本文为博主原创文章,转载请注明出处 Hibernate缓存: - 缓存是为了降低应用程序对物理数据源访问的频次,从而提供应用程序的运行性能的一种策略 - Hibernate缓存是提升和优化Hibernate执行效率的重要手段 工作原理: 1. 应用程序读取缓存数据 2. 缓存命中则直接返回数据 3. 缓存未命中则去数据库中查询数据,然后将数据放入缓存中并返回数据 一级缓存: 1. Hibernate一级缓存又称为“Session缓存”.“会话级缓存” 2. 通过Session从数据…
hibernate里对象有三种状态: 1,Transient 瞬时 :对象刚new出来,还没设id,设了其他值. 2,Persistent 持久:调用了save().saveOrUpdate(),就变成Persistent,有id 3,Detached  脱管 : 当session  close()完之后,变成Detached. 例子程序: Teacher类: package com.oracle.hibernate.id; import javax.persistence.Entity; im…
最新的Hibernate文档中为Hibernate对象定义了四种状态(原来是三种状态,面试的时候基本上问的也是三种状态),分别是:瞬时态(new, or transient).持久态(managed, or persistent).游离态(detached)和移除态(removed,以前Hibernate文档中定义的三种状态中没有移除态),如下图所示,就以前的Hibernate文档中移除态被视为是瞬时态. 瞬时态:当new一个实体对象后,这个对象处于瞬时态,即这个对象只是一个保存临时数据的内存区…
Hibernate 将操作的对象分为三种状态: 1. 瞬时 (Transient )/临时状态/自由状态 持久 (Persistent) 脱管 (Detached) 瞬时对象特征: 第一.不处于 Session 的缓存中,也可以说,不被任何一个 Session 实例关联. 第二.在数据库中没有对应的记录. 持久化对象特征: 第一.持久化对象总是被一个 session 关联. 第二.持久化对象与数据库中的记录对应. 第三.Session清理缓存的时候,会根据持久化对象的改变,更新数据库. 托管对象…