专栏首页用户画像hibernate中对象的3种状态 瞬时态、持久态、脱管态

hibernate中对象的3种状态 瞬时态、持久态、脱管态

Hibernate的对象有3种状态,分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。

瞬时态

由new命令开辟内存空间的java对象

举例: Person person = new Person("amigo", "女");

        如果没有变量对该对象进行引用,它将被java虚拟机回收。

        瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate中,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。

持久态

处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识。如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联。

       当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下。

       持久对象具有如下特点:

       1. 和session实例关联;

       2. 在数据库中有与之关联的记录。

托管态

当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象。当脱管对象被重新关联到session上时,并再次转变成持久对象。

       脱管对象拥有数据库的识别值,可通过update()、saveOrUpdate()等方法,转变成持久对象。

       脱管对象具有如下特点:

       1.  本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;

       2.  比瞬时对象多了一个数据库记录标识值。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SSH框架的理解

    1、jsp自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 2、包含一个controller se...

    week
  • jQuery将form列表转JSON

    week
  • 浅析JVM

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

    week
  • 《Objective-C-高级编程》干货三部曲(一):引用计数篇

    总结了Effective Objective-C之后,还想读一本进阶的iOS书,毫不犹豫选中了《Objective-C 高级编程》:

    用户1740424
  • python传参是传值还是传引用

    在此之前先来看看变量和对象的关系:Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象。而变量是对象的一个引用(又称为名字或者标...

    用户1679793
  • 用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

    控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心。 依赖注入(DI)是IoC的另外一种说法,只是从不同的角度...

    泰斗贤若如
  • JavaScript之对象学习

    对象是一种非常重要的数据类型,他是一种自包含的数据集合,包含在对象里面的数据可以通过属性和方法两种形式来访问; 1.属性是隶属于某个特定对象的变量; 2.方法是...

    郑小超.
  • 《Objective-C高级编程》温故知新之"自动引用计数"

    1、使用alloc、new、copy、mutableCopy的意味着自己生成的对象只有自己持有

    Dwyane
  • 2. Nsight Eclipse 连接TX2进行CUDA编程

    一开始非常纠结在TX2上怎么写CUDA和opencv的程序,总不能在VIM里敲吧,也许是个神器,但现在可能真的没有时间学习,好在发现了Nsight Eclips...

    和蔼的zhxing
  • Springboot2.0 + Kotlin自定义json序列化不返回null字段的方法

    飞奔去旅行

扫码关注云+社区

领取腾讯云代金券