`

Hibernate中的持久化对象状态说明

 
阅读更多
Hibernate框架中为持久化的对象设计了三种状态,处于这三种状态的对象通过一定的操作对象状态可以发生相互转化:
transient--瞬时态:通过new关键字创建的实体对象或尚未与Hibernate Session关联的对象,失去引用的话,就会被Java虚拟机回收。
persistent--持久态:通过get/load、Query查询获得或已经与当前Hibernate Session产生关联,并且相关联的session没有关闭,且事务尚未提交。
detached--脱管态:无法直接获得;存在持久化OID,但没有与当前Hibernate Session关联,hibernate不能检测到脱管状态改变

如下代码所示:
        Session session = HibernateUtils.openSession();  
        // 开启事务  
        Transaction transaction = session.beginTransaction();  
  
        Dog dog = new Dog (); // 瞬时态(没有OID,未与Session关联)  
        dog .setName("小狗狗");  
        dog .setAge(1);  
  
        session.save(dog );// 持久态(具有OID,与Session关联)  
  
        // 提交事务,关闭Session  
        transaction.commit();  
        session.close();  
  
        System.out.println(dog .getId()); // 脱管态(具有 OID,与Session断开关联)  


持久化对象之间的状态转换:
持久化对象之间的转变:

  • 瞬时——持久:save、saveOrUpdate
  • 瞬时——脱管:对象.setID(1);为瞬时对象设置新的OID
  • 持久——瞬时:delete(被删除持久化对象,不建议再次使用)
  • 持久——脱管:evict(清除一级缓存中某个对象)、close(关闭Session,清除一级缓存)、clear(清除一级缓存所有对象)
  • 脱管——瞬时:对象.setID(null);删除对象OID
  • 脱管——持久:update、saveOrUpdate、lock


分享到:
评论

相关推荐

    Hibernate 操纵持久化对象

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

    Hibernate操作持久化对象

    Hibernate 操作持久化对象是Java开发中用于简化数据库交互的重要工具。它是一个开源的Java持久化框架,由Gavin King创建,并逐渐发展成为Java世界中主流的持久化解决方案。Hibernate的核心在于提供对象-关系映射(ORM...

    Hibernate持久化对象的生命周期

    Hibernate的核心概念之一就是持久化对象的生命周期,这涉及到对象在数据库中的状态及其与Session的关系。 首先,我们来看一下Hibernate中持久化对象的三种基本状态: 1. **瞬时对象(Transient Objects)**: - ...

    Hibernate对象持久化状态

    可以通过关闭 Session 或使用 `evict()` 方法将持久化对象移出缓存。 3. Session 的操作方法 - **save()**:将对象加入缓存,变为持久化对象,并分配唯一 OID。插入操作会在缓存清理时执行。 - **update()**:将...

    Hibernate数据持久化技术

    在JDO中,首先需要编写POJO,然后通过一个名为Enhancer的工具在编译后阶段对POJO的字节码进行增强,生成对应的持久化对象。这意味着JDO的转换过程发生在编译期间,而Hibernate的转换是在运行时。 Hibernate的优点...

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

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

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

    《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...

    Hibernate 数据持久化

    - **数据持久化**: 指的是程序中的对象状态在系统重启后仍然能够保存,即使没有内存支持也能保持其状态。在Hibernate中,数据持久化是通过对象和数据库记录之间的映射实现的。 2. **Hibernate 配置** - **...

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

    4. **HQL(Hibernate Query Language)**:面向对象的查询语言,类似于SQL,但更接近Java的语法,用于检索和操作持久化对象。 5. **第二级缓存**:Hibernate支持查询结果的缓存,可以显著提高系统性能,特别是对于...

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

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

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

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

    Hibernate 对象持久化

    对象持久化是将应用程序中的对象状态存储到持久化介质(如数据库)的过程,使得即使程序关闭,对象的状态也能被保留下来。在Hibernate中,对象的生命周期包括瞬时态、托管态、持久态和脱管态。通过Hibernate,我们...

    hibernate中持久化是什么

    总结来说,Hibernate中的持久化是ORM的一种实现,它简化了Java应用与关系数据库之间的数据交换,使得对象的状态能够在数据库中持久保存,同时减少了直接操作SQL的繁琐工作,提高了开发效率和代码的可维护性。...

    hibernate:java持久化对象详解02

    在Java中,持久化对象(Persistent Object)是指其状态可以在数据库中长期保存的对象。通过Hibernate,我们可以将这些对象与数据库表中的记录相对应,使得数据操作变得简单且直观。 Hibernate的核心概念之一是实体...

    域对象在持久化层的状态

    2. **查询执行前**:当调用`Session.find()`或`Session.iterate()`方法时,如果缓存中存在对应的持久化对象,Session会首先尝试从缓存中获取,而不是直接访问数据库。若缓存中无数据,才会发起数据库查询。 #### 四...

    深入理解持久化对象

    #### 改变持久化对象状态的方法 - **将瞬态对象转换为持久化状态**:主要通过`save()`或`persist()`方法实现。这两个方法的主要区别在于,`save()`方法返回对象的标识符,而`persist()`方法则不返回任何值。 - **...

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

    【精通Hibernate:Java对象持久化技术】主要涵盖了Java应用程序的分层体系结构、软件模型以及对象持久化的概念,特别是如何使用Hibernate这一ORM框架进行持久化操作。以下是详细的知识点解析: 1. **应用程序分层...

    精通 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:java持久化对象详解01

    本教程“hibernate:java持久化对象详解01”聚焦于理解Hibernate如何将Java对象持久化到数据库中。 首先,让我们了解一下什么是持久化对象。在Java中,持久化对象是指那些状态可以被保存到持久存储介质(如数据库)...

Global site tag (gtag.js) - Google Analytics