Hibernate之持久化对象】的更多相关文章

三态的基本概念: 1,  暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象: 2,  持久化状态(Persistent):与session关联而且在数据库中有对应数据.已经持久化,增加到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3,  游离状态(Detached):持久化对象脱离了Session的对象.如Session缓…
三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2, 持久化状态(Persistent):与session关联并且在数据库中有相应数据.已经持久化,加入到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3, 游离状态(Detached):持久化对象脱离了Session的对象.如Session缓存被清空的…
持久化对象有以下几种状态: 临时对象(Transient): 在使用代理主键的情况下,  OID 通常为 null  不处于 Session 的缓存中 在数据库中没有对应的记录 持久化对象(也叫”托管”)(Persist): OID 不为 null    位于 Session 缓存中  若在数据库中已经有和其对应的记录, 持久化对象和数据库中的相关记录对应  Session 在 flush 缓存时, 会根据持久化对象的属性变化, 来同步更新数据库   在同一个 Session 实例的缓存中, 数…
知识点2: session概述 Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口,它提供了基本的保存,更新, 删除和加载Java对象的方法. 知识点3:理解session的缓存 在 Session 接口的实现中包含一系列的 Java 集合, 这些Java集合构成了 Session缓存.只要Session 实例没有结束生命周期,存放在它缓存中的对象也不会结束生命周期 当session的save()方法持久化一个对象时,该对象被载入缓存,以后即使程序中不再引用该…
一.get与load对照 在hibernate中get和load方法是依据id取得持久化对象的两种方法.但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更高.下边具体说一下get和load的不同,有些时候为了对照也会把find加进来. 1.从返回结果上对照: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索运行机制上对照: get方法和fin…
 Hibernate的持久化类 什么是持久化类        1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类.        * 持久化类 = JavaBean + xxx.hbm.xml     持久化类的编写规则        1. 提供一个无参数 public访问控制符的构造器                -- 底层需要进行反射.    2. 提供一个标识属性,映射数据表主键字段                  …
一.持久化类状态 1.1 三种持久化对象的状态 1.2 区分三种状态 1.3 三种状态对象转换 1.瞬时态 2.持久态 3.脱管态 4.持久态对象有自动更新数据库的能力 一.持久化类状态 1.1 三种持久化对象的状态 持久化类:就是一个实体类与数据库表建立了映射 Hibernate为了方便管理持久化类,将持久化类分成了三种状态 瞬时态(临时态):transient 持久态:persistent 脱管态(离线态):detached Transient(瞬时态) 特点:持久化对象没有唯一标识OID.…
时间:2017-1-19 23:00 --Hibernate持久化类的状态1.持久化类:就是一个实体类与数据库建立了映射.2.Hibernate为了方便管理持久化类,将持久化类分为了三种状态:    1)瞬时态:transient(临时态)    2)持久态:persistent    3)脱管态:detached(离线态)--三种持久化对象的状态1.三种持久化对象的状态    1)瞬时态        不存在持久化标识OID,尚未与Hibernate Session关联对象,被认为处于瞬时状态…
简介 以前学习Hibernate的笔记,整理一下便发出来了,防止弄丢.有错误的话麻烦各位留言评论,感激不尽. 持久化类 Hibernate完成了从面向对象模型表示的对象至关系模型表示的数据结构的映射,可以用面向对象的方式来处理数据库中记录.通过映射文件或注解,将持久化类映射为数据库中的表,而不需要继承任何类或者接口(即,低入侵式设计) - 但有几点最基本的要求: - 无参构造器 - 标识属性,最好使用基本类型的包装类 - 相应的getter/setter方法 瞬态 由new创建的对象且未与Ses…
定义Pojo对象和**.hbm.xml文件 -1 对于每一个需要持久化的对象都需要创建一个Pojo类定义,Hibernate要求POJO类定义中必须有一个no-argument的构造方法,便于Hibernate通过java reflection机制创建实例:[java.lang.reflect.Constructor.newInstance()]: -2 对于Pojo类定义中的类属性而言,不管访问符是否为public,也不管是否提供了对应的setter/getter方法,Hibernate都可以…
学框架,配置都是不可少的,有了配置,框架才知道我们想做什么,才知道如何去执行我们需要的操作! hibernate的配置文件,总体来说分为两个部分: 1.主配置文件hibernate.cfg.xml文件,一般放在classpatn路径下 2.映射文件xxx.hbm.xml文件,一般跟实体类放在同一个包下 前者是配置相关的数据库以及引入的映射文件信息,而后者则主要配置对象与表之间的映射关系: 注意:配置文件的路径,因人而异,有的将映射文件集体放置在一起也有,所以看个人喜好,没有强制规定如何存放. 以…
Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate数据库表之间存在依赖关系的情况,在Hibernate中配置,这样在实际开发中会大大减少SQL的编写量.现在进一步深入Hibernate的级联关系. 1.级联关系 在Hibernate中持久化对象之间通过相互关联互相引用,对象进行保存.更新和删除的时候,关联的对象也会执行相对应的操作,这些使用Hi…
一.持久化对象的状态        站在持久化的角度, Hibernate 把对象分为 4种状态: 持久化状态,临时状态,游离状态,删除状态.Session 的特定方法能使对象从一个状态转换到另一个状态.   •临时对象(Transient): –在使用代理主键的情况下, OID 通常为null –不处于 Session的缓存中 –在数据库中没有对应的记录 •持久化对象(也叫"托管")(Persist): –OID 不为null –位于 Session缓存中 –若在数据库中已经有和其对…
在Hibernate中,持久化对象再被操作过程中分为三个时期.这三个时期和session周期相关. 各自是瞬时(Transient),持久太(persistent)和游离态(Detached) 瞬时状态 由new命令开辟内存的java对象.比如:Student stu= newStudent();若没有变量对他引用,则被jvm回收.瞬时对象在内存中孤立存在,他的意义仅是携带信息的载体,不和数据库中的数据有不论什么的关联.通过session的save()和saveOrUpdate()方法能够把一个…
准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernate中的核心接口进行一些JDBC基本操作,来观察状态的转移. 准备工作很重要,需要了解一些专业词汇,所谓专业词汇,意思大家都懂,只是在专业领域里起个专业的名称罢了.所以见到陌生东西时,应该尽可能的消除这种不必要的恐惧. 先了解这个专业词汇 何谓“持久化” 持久(Persistence),即把数据(如内…
关于OID hibernate缓存是一个map,他会根据OID作为缓存对象的key,我们的映射文件中<id>标签指定的属性值会作为OID 持久化对象的三种状态 为了方便理解,Hibernate为持久化对象定义了三个状态: 瞬时态:没有持久化标识OID,没有被纳入Session对象的管理 持久态:有持久化标识OID,已经被纳入Session对象的管理 托管态:有持久化标识OID,但没有被Session对象管理 用一个小示例来演示: 持久态的一个常见误解 需要注意的是,被纳入session对象的管…
http://blog.csdn.net/yerenyuan_pku/article/details/52761021 上一篇文章中我们学习了Hibernate中java对象的状态以及对象的状态之间如何转换.本文我们将详细讲解Session中的方法. save() Session的save()方法使一个临时对象转变为持久化对象. Session的save()方法完成以下操作: 把新new的对象加入到Session缓存中,使它进入持久化状态. 选用映射文件指定的标识符生成器,为持久化对象分配唯一的…
一.综述 hibernate中的对象有三种状态,分别是TransientObjects(瞬时对象).PersistentObjects(持久化对象)和DetachedObjects(托管对象也叫做离线对象). 二.Hibernate对象三种状态转化图: 三.Hibernate对象三种状态简介及转化条件: (1)临时状态: 由Java的new命令开辟内存空间的java对象也就是普通的java对象,如果没有变量引用它它将会被JVM收回.简单的说就是程序里面new一个对象,还没有和session关联…
图书信息:孙卫琴 电子工业出版社 第1章 Java应用分层架构及软件模型: 1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据模型 1.2.3 域模型 1.2.4 域对象 1.2.5 域对象之间的关系 1.2.6 域对象的持久化概念 1.3 小结 1.4 思考题第2章 Java对象持久化技术概述: 2.1…
以下情况java对象进入持久化状态: session.save()方法把临时对象转变为持久化对象. session.load()和session.get()方法得到的对象总是处于持久化状态. session.update(),saveOrUpdate()和lock()方法使游离对象转变为持久化状态. Query接口的list()方法返回的list集合中存放的都是持久化对象. 一个持久化对象关联一个临时对象,在允许级联保存的情况下,Session在清理缓存时,会把这个临时对象也转变为持久化对象.…
1.  对象持久化 对象的持久化就是把内存中对象形式的业务数据,转换成数据库中的关系数据形式的业务数据.广义理解,对象的持久化还包括内存与关系数据库之交换业务数据的各种操作. 2. 对象持久化模式 1. 直接通过JDBC(java database connectivity) API来持久化实体域对象 实体域对象的持久化最终必须通过数据库访问代码来实现.java.sql包中提供了JDBC API,常用的接口和类有以下内容: DriverManager:  驱动程序挂历器,负责创建数据库连接 Co…
持久化对象的生命周期 瞬态(自由态) 表示对象在内存中存在,在数据库中没有数据相关,比如刚刚new出来的一个对象 持久态 持久态指的是持久化对象处于由Hibernate管理的状态,这种状态下持久化对象的变化将会被同步到数据库中 session.save() .....到..session.getTransaction().commit();这个过程 托管态(游离态 提交之后的状态 处于持久态的对象,在其对应的Session实例关闭后,此时对象进入游离态.也就是说Session实例是持久态对象的…
持久化对象 再讲持久化对象之前,我们先来理解有关session中get方法与 load方法区别: 简单总结: (1)如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来延迟加载该对象. 在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,那没办法,只能抛异常. 由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id…
一.持久化对象po类 1.po定义 PO,是Persistent Object的缩写,是持久化类.PO是由PO=POJO+hbm映射配置组成. 2.通俗理解 PO类即持久化类,其实就是一个普通的JavaBean,只是要申明遵循一定的规则就是一个PO类. 在Hibernate框架中,采用的面向对象的思想实现数据库的CRUD操作.在数据库中每一个表就有一个对应一个持久化对象.PO类可以看成,与数据库表相映射的Java实体对象.最简单的PO类中的属性对应数据库中表的字段名. //演示如何创建一个po实…
Hibernate中的对象有3种状态 瞬时对象(TransientObjects).持久化对象(PersistentObjects)和离线对象(DetachedObjects也叫做脱管对象) Transient 瞬时对象 不在Session的缓存中,不与任何的Session实例相关联. 在数据库中没有与之相对应的记录 通过Session的save()方法和saveOrUpdate()方法可以把一个临时对象和数据库相关联,并把临时对象携带的信息通过配置文件所做的映射插入数据库中,这个临时对象就成为…
Hibernate对其持久化对象实现了缓存管理,来提高系统性能,Hibernate支持两级缓存管理,一级缓存 是由Session提供的,因此它只存在于Session的生命周期中,是Session所内置的,不能被卸载. Hibernate的二级缓存是由SessionFactory提供的,他作为一个可插入的组件使用的,默认是不支持的,应用必须明确配置二级缓存才能使用. Session缓存的作用: 降低数据库的访问频率 保证缓存中的对象与数据库中的相关记录保持同步持久化对象的状态: 临时状态(Tran…
在上一篇博文中,小编主要简单的介绍了[SSH系列]--hibernate基本原理&&入门demo,今天小编来继续介绍hibernate的相关知识, 大家知道,Java对象的生命周期,是从通过new语句创建开始,到不再被任何引用变量引用结束,结束后它占用的内存将被JVM垃圾回收机制收回.在hibernate中持久化类的对象可以划分为三种状态,分别是瞬态,持久态,脱管态.       一.瞬态(Transient),也叫临时态.处于这种状态的对象具备的特征如下:       a.不在Sessi…
持久化对象 再讲持久化对象之前,我们先来理解有关session中get方法与 load方法区别: 简单总结: (1)如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来延迟加载该对象. 在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,那没办法,只能抛异常. 由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id…
持久化对象唯一标识——OID 1)数据库中使用主键可以区分两个对象是否相同2)Java语言中使用对象的内存地址区分对象是否相同3)Hibernate中使用OID区分对象是否相同Hibernate认为每一个不同的对象应该具有一个唯一的标识,称这个标识为OID:为了使数据模型与数据库表一样使用主键来进行数据的区分,在数据模型类中声明唯一标识(uuid),作为Hibernate管理对象的唯一标识,并使用该标识与数据库表中的主键进行一一对应:为配合后期框架的使用,还使用该标识设定Java对象区分的规则,…
1. 瞬态 : 对象有new操作符创建,且尚未与Hibernate Session关联的对象被认为处于瞬态.瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识.如果程序中失去了瞬态对象的引用,瞬态对象将被垃圾回收几只销毁.使用Hibernate Session可以将其变为持久化状态. 2. 持久化:持久化实例在数据库中有对应的记录,并拥有一个持久化标识(identifier).持久化的实例可以是刚刚保存的,也可以是刚刚被加载的.无论哪一种,持久化对象都必须与指定的Hibernate Sess…