本文来自 http://blog.sina.com.cn/u/2924525911

hibernate 三种状态详解

(2013-04-15 21:24:23)

  分类: hibernate

自己学完了hibernate用完了这些东西,所有把这个东西做了一个总结,常见的hibernate状态是基于对象的,下面就详解了这些状态。。。。

下面是他们的图详解:

1.在对象中如果对象刚创建没有被持久化的话那么这样对象的状态就是临时状态,

比如 student stu = new student("ss");这个时候对象就是处于自由状态,那么为什么讲是处于自己状态呢?因为只是在jvm内存空间获取一块空间,还没有在数据库中处于
持久化状态,那么这时候对象就是那么最大的特点是在数据库不存在与他对应的记录。。。。

瞬时对象特点:

(1) 不和 Session 实例关联

(2) 在数据库中没有和瞬时对象关联的记录

2.持久状态 (Persistent)

     持久化对象就是已经被保存进数据库的实体对象,并且这个实体对象现在还处于Hibernate的缓存管理之中。这是对该实体对象的任何修改,都会在清理缓存时同步到数据库中。如下所示:

     custorm cst = new custorm("20","1");

    tx =  sesssion.beginTranction();

    //创建对象

    session.save(cst );

    tx.commit();

    这个时候cst就是持久化状态,那么这样的对象能够被hibetnate缓存管理,这样就是持久状态

  1。特点: 

        (1)持久的实例在数据库中有对应的记录,并拥有一个持久化标   识 (identifier).

(2) 和session相关联的对象

2.  瞬时对象转为持久对象:

通过session对象的save或者saveorupdate()方法方法把一个瞬时对象与数据库相关联,这个瞬时对象就成为持久化对象。

3.托管状态:

   脱管状态最大的特征就是对象脱离了hibernate缓存管理状态,游离状态的与自由状态的区别是:自由状态数据库没有与其对应的记录,而脱管状态数据库有一个对应的记录但是脱离了hibernate缓存管理状态,下面是hibernate代码:

//创建对象

student stu = new student("s");

//sesion启动

tx = session.beginTranction();

//保存对象

session.save(stu);

//提交

tx.commit();

//关闭session

   session.close();      //注意:这个时候对象就从持久状态转到脱管太

 

  脱管状态的特点:

    本质上跟那个游离状态是一样的,但是比游离状态多了数据库一个对应的一个记录。。。

  还有脱管状态转换为持久化状态只需要session.update(),持久化状态转换为临时状态只需要session.delete(),那么脱管状态转换为临时状态只需要session.delete就ok了!!!!!!!!!!!!!!!!!!!!!!!!

[转]hibernate三种状态详解的更多相关文章

  1. Hibernate 的三种状态详解

    hibernate的对象有3种状态,分别为:瞬时态(Transient).持久态(Persistent).脱管态(Detached). 处于持久态的对象也称为PO(Persistence Object ...

  2. 简单理解Hibernate三种状态的概念及互相转化

    本文描述了Hibernate三种状态的概念及互相转化.Java对象的生命周期中有三种状态,而且互相转化.它们分别是临时状态,持久化状态,以及游离状态. AD:WOT2015 互联网运维与开发者大会 热 ...

  3. 多表连接的三种方式详解 hash join、merge join、 nested loop

    在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式.多表之间的连接有三种方式:Nested Loops,Hash Join 和 Sort Merge Join.具体适用哪 ...

  4. 分布式事务 Seata Saga 模式首秀以及三种模式详解 | Meetup#3 回顾

    https://mp.weixin.qq.com/s/67NvEVljnU-0-6rb7MWpGw 分布式事务 Seata Saga 模式首秀以及三种模式详解 | Meetup#3 回顾 原创 蚂蚁金 ...

  5. hibernate三种状态

    转自:http://www.cnblogs.com/xiaoluo501395377/p/3380270.html 学过hibernate的人都可能都知道hibernate有三种状态,transien ...

  6. Hibernate三种状态的转换

    hibernate的状态 hibernate的各种保存方式的区(save,persist,update,saveOrUpdte,merge,flush,lock)及 对象的三种状态 hibernate ...

  7. Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 引自http://www.blogjava.net/TiGERTiAN/archive/2008/10/25/236519.html

    Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...

  8. hibernate 三种状态的转换

    一.遇到的神奇的事情 使用jpa操作数据库,当我使用findAll()方法查处一个List的对象后,给对这个list的实体进行了一些操作,并没有调用update 或者 saveOrUpdate方法,更 ...

  9. SSH框架之-hibernate 三种状态的转换

    一.遇到的神奇的事情 使用jpa操作数据库,当我使用findAll()方法查处一个List的对象后,给对这个list的实体进行了一些操作,并没有调用update 或者 saveOrUpdate方法,更 ...

随机推荐

  1. Inno Setup入门(六)——在程序目录下创建文件

    创建文件夹可以使用[dirs]段实现,代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName="E:\TES ...

  2. sql关键字过滤C#方法

    /// <summary> ///SQL注入过滤 /// </summary> /// <param name="InText">要过滤的字符串 ...

  3. Myclipse 安装 Maven遇见的N个异常

    1.Maven 下载好,配置完环境变量,同时在Myeclipse配置好Maven,这时创建Maven项目失败,报如下异常: Could not resolve archetype org.apache ...

  4. 简单粗暴的“Debug模式”

    在项目中,通常会遇到:调试程序和程序在线上运行时程序运行的参数不一样, 例如线上运行时程序是获取线上的机器的ip,而调试程序时,我们会指定一个ip进行调试. 又或者项目要与多个系统进行数据交换,调试的 ...

  5. 【servlet】 过滤器模板

    EncodingFilter.java package Filter; import java.io.IOException; import javax.servlet.Filter; import ...

  6. Windows 常用消息及含义

      消息范围 说明 0 - WM_USER – 1 系统消息 WM_USER - 0x7FFF 自定义窗口类整数消息 WM_APP - 0xBFFF 应用程序自定义消息 0xC000 - 0xFFFF ...

  7. runtime关联属性示例

    前言 在开发中经常需要给已有的类添加方法和属性,但是Objective-C是不允许给已有类通过分类添加属性的,因为类分类是不会自动生成成员变量的.但是,我们可以通过运行时机制就可以做到了. 本篇文章适 ...

  8. java下发电子邮件demo

    在实际项目中会遇到需要使用邮件注册,或者是使用邮件找回密码等操作,需要使用到邮件发送功能. 其实邮件的发送主要是依赖于邮件协议,只要能实现邮件协议,那么发送邮件其实还是很容易的.这一步java类库已经 ...

  9. JSP内置对象--pageContext对象(非常重要!!!)

    pageContext对象是javax.servlet.jsp.PageContext类的实例,只要表示的是一个jsp页面的上下文,而且功能强大,几乎可以操作各种内置对象. >forward(S ...

  10. linux下libreoffice安装测试

    一.Linux安装 wget http://download.documentfoundation.org/libreoffice/stable/4.4.6/rpm/x86_64/LibreOffic ...