zoukankan      html  css  js  c++  java
  • Hibernate中对象的3种状态:瞬时态、持久态、脱管态

    Hibernate的对象有3种状态,分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久 态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。
    1、瞬时态
    由new命令开辟内存空间的java对象,

    比如:ThinkSoar thinkSoar = new ThinkSoar(“name”, “边哥”);

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

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

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

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

    持久对象具有如下特点:

    1 >. 和session实例关联;

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

    3、脱管态

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

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

    脱管对象具有如下特点:

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

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

  • 相关阅读:
    HAProxy、Keepalived 在 Ocatvia 的应用实现与分析
    Octavia 的 HTTPS 与自建、签发 CA 证书
    Octavia 创建 loadbalancer 的实现与分析
    OpenStack Rally 质量评估与自动化测试利器
    自建 CA 中心并签发 CA 证书
    Failed building wheel for netifaces
    通过 vSphere WS API 获取 vCenter Datastore Provisioned Space 置备空间
    OpenStack Placement Project
    我们建了一个 Golang 硬核技术交流群(内含视频福利)
    没有图形界面的软件有什么用?
  • 原文地址:https://www.cnblogs.com/luoxiaolei/p/4272480.html
Copyright © 2011-2022 走看看