`
run_wang
  • 浏览: 168714 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)

 
阅读更多
hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)
三态的基本概念:

①自由态:只存在于内存中,而在数据库中没有相应数据。

②持久态:与session关联并且在数据库中有相应数据

③游离态:在数据库中有相应数据,但与session无关





三态之间的转换方法:

①如何成为自由态?对象通过构造方法成为自由态;持久态和游离态则通过session的delete方法成为自由态

②如何成为持久态?对象可以由session的load或get方法直接成为持久态;自由态对象可以通过save,saveOrUpdate或persist方法成为持久态;游离态对象则可以通过update,saveOrUpdate成为持久态

③如何成为游离态?游离态只能由持久态转换而来,通过close或clear方法实现。







几种转换方法的对比:

1.get 与load

都是从数据库中加载数据封装为java对象,使得java对象从自由态直接变为持久态;

但是有两点区别:①get返回对象或null,load返回值则始终不为null,找不到时会抛异常②get即时执行insert,而load则是在使用此对象时才执行insert

2.save,update与saveOrUpdate

save是将自由态转为持久态,而update是将游离态转为持久态,saveOrUpdate可以说是两者的综合,它执行时先判断对象的状态(主要是通过有无主键判断的),若是自由态,则save,若是游离态,则update

3.save与persist

两者都是将对象由自由态转为持久态,但返回值不同:save返回主键值,而persist不返回

4,saveOrUpdate与merge

两者都是将自由态或游离态对象与数据库关联,但merge不改变对象的原有状态



此外,对clear与flush方法也作介绍。clear是将session中的对象全部变为游离态,是对象由持久态变为游离态的一种方法(另外一种是关闭session);flush方法时为了使update操作能即时进行(正常情况下,只有在事务关闭时才进行update操作)。
分享到:
评论

相关推荐

    精通Hibernate:Java持久化对象技术详解[第二版]

    8. **实体生命周期**:详解Hibernate对对象状态的管理,包括瞬时态、持久态、游离态和脱管态,以及对象状态转换和事件监听器。 9. **多态和继承映射**:讲解如何处理类的继承关系,实现多态查询,包括单表继承、...

    Hibernate 面试题

    1. **持久化对象的生命周期**:在Hibernate中,对象经历了临时态、持久态和游离态三个状态。临时态的对象没有与Session关联,数据未保存到数据库;持久态对象已与Session绑定,其状态会随Session的提交而保存到...

    测试实体对象的生命周期

    在IT行业中,尤其是在Java开发领域,实体对象的生命周期管理是至关重要的一个环节,尤其是在使用ORM(Object-Relational Mapping)框架如Hibernate时。本文将详细探讨“测试实体对象的生命周期”,并结合给定的标签...

    hibernate-符合Java习惯的关系数据库持久化

    9. **生命周期:** Hibernate对象有瞬时态、持久态、托管态和游离态四种状态,理解这些状态对于正确使用Hibernate至关重要。 10. ** Hibenate事件和监听器:** Hibernate提供了一套事件系统,允许用户在特定操作...

    hibernate三状态

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了强大的对象关系映射(ORM)功能,简化了数据库操作。其中,Hibernate的对象状态管理是其核心特性之一,理解并掌握对象的三种状态对于有效...

    HIBERNATE符合Java习惯的关系数据库持久化

    9. **实体状态**:Hibernate将实体对象的状态分为瞬时态、持久态、游离态和删除态,理解这些状态有助于我们更好地控制对象的生命周期和数据操作。 通过学习以上知识点,你可以全面掌握Hibernate的使用,实现Java...

    hibernate 3.6 中文 chm

    9. **实体生命周期**:Hibernate管理对象的生命周期,包括瞬时态、持久态、托管态和游离态。理解这些状态转换有助于避免编程陷阱。 10. **一对多、多对一、一对一和多对多关系映射**:Hibernate支持多种关联映射,...

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany

    1. 游离态(Detached):对象在应用程序中创建,但尚未与Session关联。对象的状态和数据库中的记录可能不一致。 2. 瞬时态(Transient):对象刚被创建,与Session关联,但尚未持久化到数据库。如果Session关闭或...

    hibernate中文参考文档

    4. **实体生命周期**:阐述了持久化对象的生命周期,包括瞬时态、持久态、托管态和游离态,并讨论了状态转换和级联操作。 5. **关联映射**:讲解了一对一、一对多、多对一、多对多等各种关联映射方式,以及集合类型...

    三大框架之一Hibernate 介绍

    5. **对象状态**:Hibernate中的对象有三种状态——临时态、持久态和游离态。临时态的对象不在Session缓存中,数据库中也没有记录。持久态的对象存在于Session缓存中,与数据库记录保持同步。游离态的对象是从...

    Hibernate3.1中文帮助文档

    8. **实体生命周期**:Hibernate管理对象的生命周期,包括瞬时态、持久态、托管态和游离态,确保数据在内存和数据库间的同步。 9. **一对多、多对一、一对一和多对多关系映射**:Hibernate支持各种复杂的关联映射,...

    Hibernate 中文开发者文档

    5. **实体状态管理**: Hibernate区分了瞬时态、持久态、脱管态和游离态,便于理解对象的生命周期。 以上内容只是Hibernate中文开发者文档的基础概述,实际文档会包含更详细的使用示例、最佳实践和解决常见问题的...

    hibernate源码

    通过不同的状态转换,Hibernate实现了对象的生命周期管理,如持久化对象的持久化、检索、更新和删除。 九、实体关系映射 Hibernate支持多种关系映射,包括一对一、一对多、多对一、多对多。通过注解或XML配置,...

    Hibernate-PPT(是一个很好的hibernate学习资料)

    在Hibernate中,对象有四种状态:瞬时态(Transient)、持久态(Persistent)、托管态(Managed)和游离态(Detached)。这些状态反映了对象与数据库的关联程度,影响着Hibernate如何管理对象的生命周期。 ...

    hibernate全套学习课件ppt

    13. **实体生命周期**:Hibernate定义了几个关键的生命周期状态,如瞬时态、持久态、游离态和脱管态,理解这些状态有助于更好地管理对象。 本套课件详细讲解了上述知识点,并可能包含实际案例和练习,是学习...

    Hibernate依赖包 所有的

    10. **实体生命周期**:Hibernate管理对象的生命周期,包括瞬时态、持久态、托管态和游离态,理解这些状态对优化性能和处理并发问题至关重要。 11. **关联映射**:包括一对一、一对多、多对一、多对多等关联关系,...

    Hibernate3.1_DOC_CN

    12. **实体生命周期**:掌握Hibernate中的持久化对象生命周期,包括瞬时态、持久态、游离态和脱管态,并了解它们之间的转换。 13. **事件监听器**:了解Hibernate的事件系统,如何使用监听器来扩展Hibernate的行为...

    hibernate3中文手册

    12. **实体状态管理**:区分临时态、持久态、游离态和删除态,理解它们之间的转换过程。 13. **性能优化**:包括批处理、延迟加载、缓存策略等提高Hibernate应用性能的方法。 14. ** Hibenate事件监听**:讲解如何...

Global site tag (gtag.js) - Google Analytics