`
huangronaldo
  • 浏览: 222995 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Hibernate实体对象的三种状态

阅读更多

Hibernate实体对象的三种状态

 

       实体对象的生命周期,是Hibernate应用中的一个关键概念。实体对象生命周期的三种状态如下:

 

       1.Transient(自由状态)

           所谓Transient,即实体对象在内存中的自由存在,它与数据库中的记录无关。如:

 

      public void methodA(){
            User user = new User();
            user.setName("Huangt");            

      }

        这里的user对象,与数据库中的记录没有任何关系。

 

       2.Persistent(持久状态)

           所谓Persistent,即实体对象处于由Hibernate框架所管理的状态。这种状态下,实体对象的引用被纳入Hibernate实体容器中加以管理。

 

 

   Transaction tx = session.beginTransaction();
   session.save(user); 
   //此时user对象已经由Hibernate纳入实体管理容器,处于Persistent状态
   tx.commit();//事务提交之后,库表中已经插入一条用户 
    
   Transaction tx2= session.beginTransaction();
   user.setName("huang") ;//Persistent 
   anotherUser.setName("ronaldo") ; //Transient
   
   tx2.commit() ;
   /*
       虽然这个事务中我们没有显示调用session.save()保存对象
       但是由于处于Persistent状态的对象将自动被固化到数据库中,因此user对象
       的变化也将同步到数据库中,’Huangt‘用户记录已经被更新为‘huang’ 
       而对于Transient状态的anotherUser 来说,并没有改变 
    */

         可以看到,处于Transient状态的实体对象,可以通过session.save() 方法转换为Persistent状态。而同样,如果一个实体对象是由Hibernate加载(如通过session.load方法获得),那么,它也处于Persistent状态。Persistent对象对应了数据库中的一条记录,可以看作是数据库记录的对象化操作接口,其状态的变更将对数据库的记录产生影响。

 

          简而言之,如果一个实体对象与某个Session实例发生了关联,并处于对应Session有效期内,那么它就处于Persistent状态。

 

     3.Detached(游离状态)

        处于Persistent状态的对象,其对应的Session实例关闭之后,那么,此对象就处于“Detached”状态。

 

        Session实例可以看作是Persistent对象的宿主,一旦此宿主失效,那么其从属的Persistent对象即进入Detached状态。

 

 

   Transaction tx = session.beginTransaction();
   session.save(user); 
   //此时user对象已经由Hibernate纳入实体管理容器,处于Persistent状态
   tx.commit();//事务提交之后,库表中已经插入一条用户 
  
   tx2.commit() ;
   
   session. close() ;
   //user对象此时状态为Detached,因为与其关联的session已经关闭

 

      那么,Detached状态与Transient状态有什么区别?

      区别就在于Detached对象可以再次与某个Session实例相关联而成Persistent对象。

分享到:
评论

相关推荐

    05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法

    总结来说,理解和掌握实体对象的三种状态以及`saveOrUpdate`方法是优化Hibernate应用的基础。通过深入学习这些概念,开发者能够更有效地处理数据持久化,提高代码的稳定性和可维护性。在实践中,应根据具体需求选择...

    Hibernate实体对象操纵

    **Hibernate实体对象操纵** 在Java开发中,Hibernate是一款非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库数据。本篇文章将深入探讨Hibernate中的...

    Hibernate中的实体状态及转换

    首先,我们要了解Hibernate定义的三种实体状态: 1. **临时状态(Transient)**:当我们在程序中通过`new`关键字创建一个实体对象时,它默认处于临时状态。此时,对象未被Hibernate管理,即使对象包含了主键ID,如果...

    Hibernate实体层设计

    总的来说,Hibernate实体层设计是一个综合性的任务,它涉及到对象模型、数据库映射、关系处理、性能优化、事务管理等多个方面。理解和熟练掌握这些知识,能够帮助我们构建出高效、稳定的Java企业应用。

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

    本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 一、Hibernate对象三状态 1. 游离态(Detached):对象在应用程序中创建,但尚未与Session...

    hibernate操纵实体对象

    在这个主题“hibernate操纵实体对象”中,我们将探讨如何使用Hibernate来创建、更新、删除和查询数据库中的实体对象。 首先,`HibernateSessionFactory`是Hibernate的核心组件之一,它负责创建`Session`对象。`...

    hibernate相关配置 3种状态

    本篇将详细阐述Hibernate中的对象映射关系以及对象的三种状态。 对象映射是Hibernate的核心特性,它通过ORM(Object-Relational Mapping)技术将Java对象与数据库表之间的关系进行映射。Hibernate提供了一种声明式...

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

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    Hibernate 操纵持久化对象

    Hibernate提供了四种对象状态:瞬时态、持久态、脱管态和临时态,理解这些状态对于有效操纵持久化对象至关重要。 **三、配置Hibernate** 在开始操纵持久化对象之前,需要先配置Hibernate。这包括编写Hibernate配置...

    JPA学习笔记-EJB-05JPA实体对象状态和实体对象的高级操作

    ### JPA实体对象状态 #### 一、实体对象的状态分类 在Java Persistence API (JPA) 中,实体对象的状态管理是实现数据持久化的基础之一。根据实体对象与实体管理器(EntityManager)之间的交互关系,实体对象可以...

    精通Hibernate:Java对象持久化详解.zip

    在Java开发中,持久化是将应用程序中的对象状态保存到持久存储介质(如数据库)的过程。Hibernate通过提供一种对象-关系映射机制,使得Java对象可以直接与数据库表进行交互,而无需编写大量的SQL语句。这种映射机制...

    浅谈Java实体对象的三种状态以及转换关系

    Java实体对象的三种状态是指在Hibernate框架中,实体对象在生命周期中所经历的三个阶段,即瞬时态、持久态和游离态。 瞬时态(New or Transient):当创建一个新的实体对象时,它处于瞬时态。这时对象只是一个保存...

    Hibernate操作持久化对象

    在Hibernate中,对象的状态分为瞬时状态、持久状态和脱管状态。瞬时状态的对象存在于内存中,但未与SessionFactory关联;持久状态的对象已经被持久化到数据库,并且可以通过SessionFactory追踪;脱管状态的对象曾经...

    hibernate 三种状态的转换

    在Hibernate ORM框架中,实体对象可以处于三种不同的状态:瞬时状态(Transient)、持久状态(Persistent)和脱管状态(Detached)。理解这些状态对于有效地管理和更新数据库中的数据至关重要。 **瞬时状态...

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

    在Java应用开发中,对象持久化是一个关键环节,它涉及将程序中的对象状态存储到持久化介质(如关系型数据库)中,并在需要时恢复这些状态。Hibernate作为ORM(对象关系映射)框架,通过提供一种面向对象的方式来处理...

    Java 精通Hibernate对象持久化技术权威指南

    了解实体类、持久化属性、主键、对象状态等基本术语。 2. **配置与环境搭建**:学习如何配置Hibernate,包括hibernate.cfg.xml文件的编写,以及JDBC连接池的设置。 3. **对象关系映射(ORM)**:研究Hibernate的...

    Hibernate对象

    在处理大量数据或复杂的业务逻辑时,正确地使用Hibernate对象状态可以极大地提高效率和性能。例如,当处理大量对象时,可以先将对象设置为游离状态,待所有更改完成后再一次性提交,以减少数据库事务的频繁交互。

    精通Hibernate:java对象持久化技术

    - **对象状态**:瞬时态、持久态、托管态和脱管态。 - **CRUD操作**:创建(save/insert)、读取(get/load)、更新(update)和删除(delete)对象。 - **查询语言**:HQL(Hibernate Query Language)和...

    hibernate三状态

    其中,Hibernate的对象状态管理是其核心特性之一,理解并掌握对象的三种状态对于有效使用Hibernate至关重要。本文将详细解析Hibernate的三状态以及它们在实际开发中的应用。 一、Hibernate对象的三种状态 1. **瞬...

Global site tag (gtag.js) - Google Analytics