在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的。对于理解hibernate,JVM和sql的关系有更好的理解。对于需要持久化的JAVA对象,在它的生命周期中有三种状态,而且互相转化。
1, 临时状态(Transient):用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象;
2, 持久化状态(Persistent):已经持久化,加入到了Session缓存中。如通过hibernate语句保存的对象。处于此状态的对象叫持久对象;
3, 游离状态(Detached):持久化对象脱离了Session的对象。如Session缓存被清空的对象。
特点:已经持久化,但不在Session缓存中。处于此状态的对象叫游离对象;
×√
|
临时状态
(Transient)
|
持久化状态
(Persistent)
|
游离状态
(Detached)
|
是否处于Session缓存中
|
×
|
√
|
×
|
数据库中是否有对应记录
|
×
|
√
|
√
|
|
|
|
|
游离对象和临时对象异同:
两者都不会被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 是持久化对象的过程执行;
分享到:
相关推荐
提供完整的应用案例,使读者可以深入体会SSH开发模式的精髓 所有开发工具和框架均使用目前的最新版本,紧跟技术发展的趋势 提供230个实例和4个综合案例,可以作为案头必备的查询手册 一线开发人员全力打造,分享技术...
提供完整的应用案例,使读者可以深入体会SSH开发模式的精髓 所有开发工具和框架均使用目前的最新版本,紧跟技术发展的趋势 提供230个实例和4个综合案例,可以作为案头必备的查询手册 一线开发人员全力打造,分享...
它是基于Java EE平台的Web应用程序,采用了流行的Ext JS框架进行前端设计,后端则使用了Struts2、Spring和Hibernate(即SSH)这三个强大的开源框架来实现MVC架构。这个系统的主要目标是提供一个高效、稳定且用户友好...
最后,通过三个综合实例,演示如何利用EJB及Struts、Hibernate、Spring等常见的Java EE 架构开发企业Web应用系统 目录 第1章 构建动态Web页面 例程1-1:利用Servlet显示动态日期 例程1-2:利用JSP表达式显示动态...
我会从这个论文开始,以更加饱满的状态,更 加积极的态度来进行更深入的学习。 一、系统分析 1.留言板管理系统前端的主要功能是: (1)用户注册。 (2)用户登录。 (3)用户发表主题。 (4)用户回复。 (5)用户修改个人...
│ Java面试题57.hibernate对象状态及其转换.mp4 │ Java面试题58:hibernate的缓存.mp4 │ Java面试题59.webservice的使用场景.mp4 │ Java面试题60.Activiti的简单介绍.mp4 │ Java面试题61.linux的使用场景.mp4 ...
7种常见的设计模式和使用场景 Java必会基础与新版本特性 :hot_beverage:深入浅出JVM JVM内存模型 性能调优、线上问题排查 类加载机制详解 垃圾回收机制 垃圾回收器、垃圾回收算法 :jack-o-lantern:拓展知识 :open_...
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跨域交互即缓存处理方法...
本书适合所有掌握JavaEE(Java企业级版本)开发技术的人员——无论您是技术开发者、项目实施者、系统架构师,还是流程分析师、业务方案顾问,本书都适合您。 第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 ...