`
kidiaoer
  • 浏览: 807860 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Hibernate中持久化类实例的三种状态

阅读更多
在Hibernate中持久化类实例的3种状态。Java对象有其自己的生命中期,从通过 new语句创建开始,到不再被任何变量引用结束,结束后它占用的内存将被JVM垃圾回收机制收回。在Hibernate中持久化类实例可以划分为3种状态,分别是临时状态、持久化状态和游离状态。
(1)临时状态
临时状态(transient)是指持久化类实例从通过new语句创建到被持久化之前,处于临时状态的持久化类实例简称“临时对象”。
临时对象具备如下特征:
不存在于Session实例的缓存中,不与任何Session实例相关联
在数据库中没有与之相对应的记录
促使持久化类实例进入临时状态的情况如下:
通过new语句创建新的持久化类实例
通过执行delete()方法删除持久化类实例
(2)持久化状态
持久化状态(persistent)是指持久化类实例从被持久化到Session实例被销毁,处于持久化状态的持久化类实例简称“持久化对象”。
持久化对象具备如下特征:
存在于Session实例的缓存中,与Session实例相关联
在数据库中有与之相对应的记录
Session实例在清理缓存时会根据持久化类实例属性的变化更新数据库
促使持久化类实例进入持久化状态的情况如下:
通过执行save()或saveOrUpdate()方法使临时对象转变为持久化对象
通过执行update()或saveOrUpdate()方法使游离对象转变为持久化对象
通过执行load()或get()方法返回的持久化类实例都是持久化类对象
通过执行find()方法返回的List集合中的持久化类实例都是持久化对象
在允许级联保存的情况下,Session实例在清理缓存时会把与持久化对象关联的临时对象转变为持久化对象
(3)游离状态
游离状态(detached)是指持久化类实例从关联它的Session实例被销毁到该实例消失,处于游离状态的持久化类实例简称“游离对象”。
游离对象具备如下特征:
不存在于Session实例的缓存中,不与任何Session实例相关联
在数据库中有与之相对应的记录(前提条件是没有其它Session实例删除该记录)
促使持久化类实例进入游离状态的情况如下:
通过执行evict()方法,可以从Session实例的缓存中删除一个持久化类实例,使之转变为游离对象
通过执行clear()方法,可以清空Session实例的缓存,使缓存中的所有持久化类实例转变为游离对象
通过执行close()方法,可以销毁Session实例,从而清空Session实例的缓存
(4)3种状态之间的转换过程
为了使读者更好的理解图1所示的持久化类实例的3种状态之间的转换过程,下面以列表的形式给出持久化类实例在程序中各状态之间的转换过程。
分享到:
评论

相关推荐

    精通hibernate:对象持久化技术孙卫琴第二版part2

    处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...

    精通Hibernate:对象持久化技术第二版part3

    处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Hibernate持久化类实现的增、删、查、改实例代码

    代码清晰容易接受,如果忘记了可以拿出来参考哦

    hibernate简介及优缺点

    1.Hibernate持久化类:Hibernate的持久化类是一个JavaBean(pojo+相应属性的getter和setter方法),该JavaBean最好实现java.io.Serializable接口 2.Hibernate映射文件:Hibernate映射文件是Hibernate与数据库进行持久化...

    精通Hibernate:Java对象持久化技术详解

    全书将详细介绍运用目前最成熟的Hibernate 3.3版本进行Java对象持久化的技术,既能掌握用Hibernate工具对这两种模型进行映射的技术,又能获得设计与开发Java对象模型和关系数据模型的经验。光盘包括本书范例源程序、...

    精通hibernate3.0(第三版).rar

    精通hibernate3.0(第三版),详解了对象持久化技术;有经典实例供学者学习;值得研读一番。

    Hibernate+中文文档

    6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. 索引集合类(Indexed ...

    Hibernate框架包

     持久化对象:持久化类的实例对象,能保存到数据库中,也能从数据库中取出来。  JPA的概念:Java Persistence API java持久化API,也就是java持久化的规范,ORM就是这JPA中所定义的,它还规定了其它很多规范,JPA...

    Hibernate中文详细学习文档

    6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. 索引集合类(Indexed ...

    基于Hibernate与Struts框架的数据持久化应用研究

    基于使用单一框架构建企业级应用时存在拓展性差,结构复杂的问题,给出使用Hibernate和Struts两个开源框架进行整合开发的实例,同时探讨如何配置和灵活使用两种框架,简化对象持久化映射工作和开发中的MVC分工,以及如何...

    hibernate3.2中文文档(chm格式)

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Hibernate中文API

    如果我们希望使用Hibernate提供的所有特性,那么所有的持久化实体(persistent entity)类(这里也包括一些次要依赖类)都需要一个这样的标识符属性。而事实上,大多数应用程序(特别是web应用程序)都需要通过...

    Hibernate Web应用的开发步骤

    Hibernate Web应用的开发一般经过以下几个步骤: ...(7)通过创建的Session实例进行持久化对象的管理。 (8)通过创建的Transaction实例进行事务管理。 (9)通过创建的Query或Criteria实例实现数据库的查询。

    Struts2、Spring和Hibernate应用实例.

    同时,Hibernate作为对象持久化的框架,能显示的提高软件开发的效率与生产力。这三种流行框架的整合应用,可以发挥它们各自的优势,使软件开发更加的快速与便捷。 struts2发布已经很久了,但关于如何使用它的教程...

    Hibernate实战(第2版 中文高清版)

     1.1.4 面向对象应用程序中的持久化   1.2 范式不匹配   1.2.1 粒度问题   1.2.2 子类型问题   1.2.3 同一性问题   1.2.4 与关联相关的问题   1.2.5 数据导航的问题   1.2.6 不匹配的代价   1.3 ...

    Hibernate 中文 html 帮助文档

    4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 (可选)...

    hibernate3

    (1)Configuration:用于解析hibernate.cfg.xml文件和XXXXX.hbm.xml文件,并创建SessionFactory对象。Configuration对象用于配置并且启动Hibernate。...(3)Session:也被称为持久化管理器,对象级数据库操作。

    Hibernate3.1_学习源码

    01 01Hibernate_Handwork : 手工配置使用Hibernate,其中详细标了Hibernate进行持久化的一些过程,因为是Hibernate的入门实例,所以注释很详细,其中有session的关闭后重建问题。 02 02Hibernate_UseMyEclipse: 利用...

    hibernate 3中的缓存小结

    当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象...

Global site tag (gtag.js) - Google Analytics