`
xyue13
  • 浏览: 13888 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

Hibernate对象三种状态:临时状态、持久状态和游离状态

阅读更多
咱们通过 get load Query对象取出的数据都是持久态的
1.为什么叫持久态的呢:是咱们在事物提交时候 如果提交了这个对象这个对象之前的操作都会被存入数据库,持久态只有在事物提交后才能真正的持久也就是数据库数据改变 这就是持久态的终极意义;

2.哪些对象是游离态的呢:是从持久化的数据转化而来比如你session关闭或者从session里delete了这个对象等,这个时候 hibernate定义了这种对象就叫游离态的了 如果你在事物提交里面之前改变了这个对象 是不会反应到数据库里面这就是游离的特征;

3.瞬时最简单 和hibernate session无关就是咱们直接new的对象 hibernate叫他瞬时态对象,他和游离一样 事物提交也不能改变数据库对应的数据;


有人说我想把瞬时对象和游离对象要变成持久的怎么办
hibernate提供的 save update等方法就是把非持久化的对象变成持久态的了。


临时状态(Transient):当new一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被jre垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过Session的save或者SaveOrUpdate把临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象。

持久状态(Persistent): 持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化对象进行delete操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关系,持久化对象变成临时状态。持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。

游离状态(Detached):当Session进行了Close、Clear或者evict后,持久化对象虽然拥有持久化标识符和与数据库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态(也叫:脱管状态)。游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。

其中,持久化状态的对象,简称为:PO(Persistence Object)

而临时状态和游离状态的对象,简称为: VO(Value Object)
分享到:
评论

相关推荐

    Hibernate 对象的三种状态和特点

    以下是Hibernate对象的三种主要状态及其特点: 1) 临时状态(Transient State): 当通过`new`关键字创建一个新的对象时,该对象处于临时状态。在这个状态下,对象并未与任何Session关联,因此它的变化不会自动反映...

    Hibernate对象持久化状态

    本篇文章将详细阐述 Hibernate 中对象的三种状态——临时状态、持久化状态和游离状态,以及 Session 缓存的工作原理。 1. Session 缓存及作用 Session 是 Hibernate 提供的一个接口,它充当了应用程序与数据库之间...

    域对象在持久化层的状态

    域对象,通常指业务逻辑中的实体类,它们在持久化层中主要存在三种状态:临时状态、持久化状态和游离状态。每种状态都代表了对象与持久化框架(如Hibernate)之间的不同关系,进而影响着对象的生命周期管理和数据库...

    Hibernate中的实体状态及转换

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

    Hibernate Session 4种对象状态.docx

    Hibernate将对象的状态划分为四种:临时状态、持久化状态、游离状态和删除状态。这些状态反映了对象与数据库记录之间的关系,有助于理解Hibernate如何管理和操作数据。 1. **临时状态(Transient State)**: 当一...

    Hibernate持久化对象的生命周期

    首先,我们来看一下Hibernate中持久化对象的三种基本状态: 1. **瞬时对象(Transient Objects)**: - 当使用`new`关键字创建一个新的Java对象时,该对象是瞬时的。这意味着它们与数据库没有任何关联。如果对象...

    Hibernate对象

    对象有三种主要状态:临时状态(Transient)、持久状态(Persistent)和游离状态(Detached)。理解这三种状态对于有效地使用Hibernate至关重要。 1. **临时状态(Transient)** - 当我们使用`new`关键字创建一个...

    hibernate三态详解.doc

    对象在 Hibernate 中可以处于三种状态:临时状态(Transient)、持久化状态(Persistent)和游离状态(Detached)。理解这些状态对于有效使用 Hibernate 进行数据操作至关重要。 1. 临时状态(Transient): 当...

    Hibernate 对象的状态检索

    本人在厦门邦初培训时候 使用的快速入门精简文档 ...对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。 延迟装载 迫切左外链接 HQL检索方式 QBC检索方式 本地SQL检索方式

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

    本章站在持久化层的角度,Java对象在生命周期中可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 ...

    hibernate三状态

    一、Hibernate对象的三种状态 1. **瞬时态(Transient)**:这是对象的初始状态,当我们在内存中创建一个新的实体对象时,它就处于瞬时态。这种状态下,对象与数据库没有任何关联,即使对象的属性值发生了变化,也...

    Hibernate 面试题

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

    精通 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:对象持久化技术第二版part3

    本章站在持久化层的角度,Java对象在生命周期中可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 ...

    Hibernate工作原理及为什么要用

    在 Hibernate 中,Java 对象可以处于三种状态: 1. 临时状态(transient):特征是不处于 Session 缓存中,数据库中没有对象记录。Java 对象可以通过 new 语句刚创建一个对象时或调用 Session 的 delete() 方法,从...

    《Java-Web应用开发基础》综合练习2.docx

    5. Hibernate 中的对象状态:在 Hibernate 中,对象有三种状态:临时状态、持久状态和游离状态。 6. Java 数据库编程:Java 数据库编程中使用的类有 Connection、ResultSet、PreparedStatement 等。基本过程包括...

    Hibernate框架讲义.pdf

    - Hibernate区分对象的三种状态:临时(瞬时)、持久化和游离(脱管)。 Hibernate框架的使用大大简化了Java应用程序的数据库操作,它不仅提供了强大的ORM功能,还有利于提高代码的可重用性、可维护性和可扩展性。...

    精通hibernate源码ch5

    总结,Hibernate对象持久化技术是Java开发中的重要技能,通过Chapter5的学习,我们可以掌握Hibernate的核心机制,提升开发效率,并为解决实际问题提供理论基础。深入理解源码,不仅有助于我们更好地利用Hibernate,...

    Hibernate练习题

    【知识点详解】 1. 关系数据模型与对象模型之间的匹配关系: ...这些知识点涵盖了Hibernate的基础概念、操作流程、对象状态管理、事务处理、对象映射、检索方式和性能优化等方面,对于理解和掌握Hibernate非常关键。

    java持久化.pdf

    Java对象在Hibernate中有三种状态: 1. **临时状态(Transient)**:这是对象刚被`new`语句创建后的初始状态。在这一状态,对象并未被持久化,也不在Session的缓存中。如果没有任何引用指向这个临时对象,JVM的垃圾...

Global site tag (gtag.js) - Google Analytics