`

hibernate 三种状态深入分析

阅读更多

Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的。对于理解hibernateJVMsql的关系有更好的理解。对于需要持久化的JAVA对象,在它的生命周期中有三种状态,而且互相转化。

1,  临时状态(Transient):new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象;

2,  持久化状态(Persistent):已经持久化,加入到了Session缓存中。如通过hibernate语句保存的对象。处于此状态的对象叫持久对象;

3,  游离状态(Detached):持久化对象脱离了Session的对象。如Session缓存被清空的对象。
特点:已经持久化,但不在
Session缓存中。处于此状态的对象叫游离对象;

×√

临时状态

Transient)

持久化状态

Persistent)

游离状态

Detached)

是否处于Session缓存中

×

×

数据库中是否有对应记录

×

 

 

 

 

 

hibernate3.gif
游离对象和临时对象异同:

两者都不会被Session关联,对象属性和数据库可能不一致;

游离对象有持久化对象关闭Session而转化而来,在内存中还有对象所以此时就变成游离状态了;

Hibernate和
SQL的关系:

在操作了hibernate的方法如save()等后,并没有直接生成sql语句,去操作数据库,而是把这些更新存入Session中,只有Session缓存要被更新时,底层的sql语句才能执行,数据存入数据库;

下面举例说明:
一,Session.save(user)运行机理。
1,把User对象加入缓存中,使它变成持久化对象;
2,选用映射文件指定的标识生成ID;
3,在Session清理缓存时候执行:在底层生成一个insert sql语句,把对象存入数据库;

注意:在你执行Session.save(user)后,在Session清理缓存前,如果你修改user对象属性值,那么最终存入数据库的值将是最后修改的值;此过程中ID不能被修改;

二,Session.delete(user)运行过程。
如果user是持久化对象,则执行删除操作,同样底层数据库的执行条件是:在Session清理缓存时候;
如果user是游离对象:
1,将user对象和Session关联,使之成为持久化对象;
2,然后按照user 是持久化对象的过程执行;

分享到:
评论

相关推荐

    java web技术开发大全(最全最新)

    提供完整的应用案例,使读者可以深入体会SSH开发模式的精髓 所有开发工具和框架均使用目前的最新版本,紧跟技术发展的趋势 提供230个实例和4个综合案例,可以作为案头必备的查询手册 一线开发人员全力打造,分享技术...

    java web开发技术大全

    提供完整的应用案例,使读者可以深入体会SSH开发模式的精髓 所有开发工具和框架均使用目前的最新版本,紧跟技术发展的趋势 提供230个实例和4个综合案例,可以作为案头必备的查询手册 一线开发人员全力打造,分享...

    龙门物流管理系统(Ext+SSH).rar

    它是基于Java EE平台的Web应用程序,采用了流行的Ext JS框架进行前端设计,后端则使用了Struts2、Spring和Hibernate(即SSH)这三个强大的开源框架来实现MVC架构。这个系统的主要目标是提供一个高效、稳定且用户友好...

    Java EE Web开发实例精解完整光盘

    最后,通过三个综合实例,演示如何利用EJB及Struts、Hibernate、Spring等常见的Java EE 架构开发企业Web应用系统 目录 第1章 构建动态Web页面 例程1-1:利用Servlet显示动态日期 例程1-2:利用JSP表达式显示动态...

    基于JAVA的留言板管理系统的毕业设计.doc

    我会从这个论文开始,以更加饱满的状态,更 加积极的态度来进行更深入的学习。 一、系统分析 1.留言板管理系统前端的主要功能是: (1)用户注册。 (2)用户登录。 (3)用户发表主题。 (4)用户回复。 (5)用户修改个人...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题57.hibernate对象状态及其转换.mp4 │ Java面试题58:hibernate的缓存.mp4 │ Java面试题59.webservice的使用场景.mp4 │ Java面试题60.Activiti的简单介绍.mp4 │ Java面试题61.linux的使用场景.mp4 ...

    java版飞机大战源码-Rockira.github.io:Rockira.github.io

    7种常见的设计模式和使用场景 Java必会基础与新版本特性 :hot_beverage:深入浅出JVM JVM内存模型 性能调优、线上问题排查 类加载机制详解 垃圾回收机制 垃圾回收器、垃圾回收算法 :jack-o-lantern:拓展知识 :open_...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...

    JBPM4工作流应用开始指南.rar

    本书适合所有掌握JavaEE(Java企业级版本)开发技术的人员——无论您是技术开发者、项目实施者、系统架构师,还是流程分析师、业务方案顾问,本书都适合您。 第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 ...

Global site tag (gtag.js) - Google Analytics