`
littie1987
  • 浏览: 134504 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Hibernate对象的生命周期

阅读更多

      都知道Hibernate的对象有三态,即游离态、持久态、脱管态。那么这三种状态的对象到底怎么区别呢?我做了一个小的测验。

		User user = new User();
		user.setId(4);
		user.setUsername("heyuanling2");
		user.setAge(23);
		user.setSex("w");
		user.setPassword("heyuanling");
		Session session = this.getSession();
		Transaction tr = session.beginTransaction();
		//User exituser = (User)session.get(User.class, new Integer(1));
		session.update(user);
		tr.commit();
		//User uu = (User)session.merge(user);
		//System.out.println(uu.getUsername());
		session.close();

      大家注意到,这里我们给这个刚创建的对象设置了Id,这样当我们使用update的时候,hibernate就会根据id去数据库里更新该记录,当然前提是id为4的记录在数据库里必须存在。那如果我们不设置id呢?结果就会报错。看来,Hibernate所宣称的持久化对象,不过就是拥有了id值的一个POIO对象罢了。因为在session里做数据库的操作时,hibernate会自然的帮我设置上id值。所以我认为,游离态和持久态对象的唯一差别就是有没有id号。

      那脱管和持久又有什么区别呢?很简单,脱管就是不在session管制之下,也就是session已经关闭了而已。其实在内存里,不管你session是不是关闭了,你的POJO对象还是存在的,没有被消亡,总要给它取个名字吧,所以就叫脱管。那我们也可以这么理解,上面程序当中的user对象也是脱管的,因为人家有id,数据库里有对应的记录,而且在session.update(user)之前它跟session也没有任何关系,把他叫脱管对象也没有错,而叫游离的似乎也可以,反正就一个概念罢了。其实搞这么多概念坑了好多人,哎。。。

分享到:
评论

相关推荐

    hibernate的生命周期

    **hibernate的生命周期** ...总之,理解并熟练掌握Hibernate对象的生命周期,对于编写高效、可靠的Java应用程序至关重要。正确管理对象状态,合理使用生命周期方法,能帮助我们避免不必要的数据库操作,提升应用性能。

    hibernate session生命周期示例

    本示例将深入探讨Hibernate Session的生命周期及其使用,帮助你更好地理解和运用这个强大的工具。 Hibernate Session是Hibernate的核心接口,它是与数据库交互的主要接口。Session对象负责管理实体对象的状态,包括...

    hibernate3.2生命周期

    总结,理解Hibernate3.2中的对象生命周期是有效使用Hibernate的关键。正确管理对象状态,能够避免数据丢失,提高应用程序性能,并减少潜在的并发问题。深入源码和使用专业工具能进一步提升开发效率。

    hibernate持久化对象生命周期[参照].pdf

    本文将深入探讨Hibernate中的持久化对象生命周期,包括瞬时对象、持久化对象和游离对象的状态转换及其特性。 1. 瞬时对象(Transient Objects) 瞬时对象是指通过`new`操作符创建但尚未与数据库记录关联的Java对象...

    05-hibernate-Object_Lifecycle_Persistence_and_Session_Management

    ### Hibernate对象生命周期、持久化与会话管理 #### 概述 在开发基于Java的应用程序时,特别是涉及数据库操作的应用场景下,Hibernate作为一款流行的Java持久层框架,为开发者提供了对象关系映射(ORM)的强大功能...

    测试实体对象的生命周期

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

    Hibernate 对象的三种状态和特点

    这些状态决定了对象与数据库之间的关联程度,以及Hibernate如何处理对象的生命周期。以下是Hibernate对象的三种主要状态及其特点: 1) 临时状态(Transient State): 当通过`new`关键字创建一个新的对象时,该对象...

    08 领域对象的生命周期 102-116.rar

    9. **生命周期方法**:在某些编程语言和框架中,领域对象可能包含一些生命周期方法,如 `save()`、`delete()`、`load()` 等,用于操作对象的生命周期。 10. **CQRS(命令查询责任分离)**:在复杂系统中,CQRS 模式...

    Hibernate考试题.pdf

    8. Hibernate对象生命周期: - Hibernate管理的对象生命周期包括瞬时态(Transient)、持久态(Persistent)、托管态(Managed)、脱管态(Detached)和删除态(Removed)。 以上就是“Hibernate考试题.pdf”中...

    hibernate中的对象关系模型

    在Hibernate中,通过`@ManyToOne`或`@OneToOne`注解表示,但需要注意的是,聚合关系通常不会影响对象的生命周期。 这些关系模型在Hibernate中通过注解或者XML配置文件进行定义,以实现Java对象和数据库记录之间的...

    Hibernate 操纵持久化对象

    Hibernate允许开发者定义对象的生命周期回调方法,如preInsert()、postInsert()、preUpdate()等,以便在对象状态改变时执行特定的业务逻辑。 **九、懒加载与立即加载** 懒加载(Lazy Loading)是一种优化策略,只在...

    Hibernate 对象持久化

    在Hibernate中,对象的生命周期包括瞬时态、托管态、持久态和脱管态。通过Hibernate,我们可以轻松地将对象从内存中保存到数据库,或者从数据库中加载到内存。 **三、Hibernate配置** 使用Hibernate,首先需要配置...

    Hibernate 面试题

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

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

    一旦对象变为持久态,Hibernate会负责它的生命周期管理,包括插入、更新和删除操作。 二、一对一(OneToOne)关系映射 在数据库设计中,一对一关系意味着两个实体表之间存在唯一映射。在Hibernate中,可以通过@...

    Hibernate对象持久化状态

    在 Hibernate 框架中,Java 对象...开发者应合理管理 Session 生命周期,避免并发问题,确保数据的一致性和完整性。同时,根据具体应用需求,选择合适的缓存清理策略和对象状态转换时机,以达到最佳的数据库操作效果。

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

    6. **实体生命周期管理**:Hibernate自动管理对象的状态,包括瞬态、持久化、托管和脱管四种状态,以及它们之间的转换。 7. **多对一、一对多、多对多关系映射**:Hibernate支持复杂的关联关系映射,如单向关联、...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     23.1.1 Session对象的生命周期与本地线程绑定  23.1.2 Session对象的生命周期与JTA事务绑定  23.2 实现对话  23.2.1 使用游离对象  23.2.2 使用手工清理缓存模式下的Session  23.3 小结  23.4 思考题 第24章...

Global site tag (gtag.js) - Google Analytics