lHibernate对象共有三种状态

•瞬时状态:瞬时对象

•持久化状态:持久化对象

•托管状态:托管对象

l瞬时对象(Transient Object),简称TO

l瞬时对象指的是应用程序创建出来的对象,并且未受到Hibernate控制,一旦Hibernate控制了该对象,具有了OID,对象就不再是瞬时对象

l持久化对象(Persistent Object),简称PO

l持久化对象指的是受Hibernate控制的对象,无论该对象是如何得到的,只要受到Hibernate控制,该对象即为持久化对象。如果Hibernate操作过程中不对该对象进行控制,对象就不再是持久化对象

l持久化对象都具有一个Hibernate用于区分对象的标识OID,OID是为Hibernate服务的,用于区分对象

l托管对象(Detached Object),简称DO

l托管对象指的是曾受Hibernate控制,被Hibernate释放,目前不再受到Hibernate控制的对象。由于Hibernate曾经控制过该对象,因此托管对象也具有Hibernate用于区分对象的标识OID

l手工为瞬时对象指定OID也可以将瞬时对象转化为托管对象

l瞬时状态:瞬时对象

•不存在持久化标识OID,不受Hibernate控制(Session关联)

l持久化状态:持久化对象

•存在持久化标识OID,受Hibernate控制(Session关联)

l托管状态:托管对象

•存在持久化标识OID,不受Hibernate控制(Session关联)

lHibernate中对象状态描述的是同一个对象,在不同阶段的形态。对象在不同的操作完成前后,状态有可能发生改变,状态的切换并不会创建新的对象。

Hibernate对象状态切换

lTO

•new创建的对象并且不携带OID

lPO

•save后的对象 update后的对象

•saveOrUpdate后的对象 merge后的对象

•delete后的对象

•load/get等通过查询方法获取到的对象

lDO

•Session关闭后,在此Session操作过程中所有的PO对象

•手工清除session中的某个PO

•为TO对象指定OID

hibernate框架学习之对象状态的更多相关文章

  1. Spring.NET依赖注入框架学习-- 泛型对象的创建和使用

    Spring.NET依赖注入框架学习-- 泛型对象的创建和使用 泛型对象的创建方法和普通对象是一样的. 通过构造器创建泛型对象 下面是一个泛型类的代码: namespace GenericsPlay ...

  2. Hibernate框架学习(三)——实体规则、对象状态、一级缓存

    一.Hibernate中的实体规则 1.实体类创建的注意事项 1)持久化类提供无参数构造,因为在Hibernate的底层需要使用反射生成类的实例. 2)成员变量私有,提供公有的get和set方法,需提 ...

  3. hibernate框架学习第三天:对象状态、一级缓存、快照等

    对象的状态 瞬时状态: 瞬时对象(TO) 应用程序创建出来的对象,不受H3控制 注意:TO对象不具有OID,一旦为TO赋值OID,那么此时就不是TO 持久化状态:持久化对象(PO) 受H3控制的对象, ...

  4. [ SSH框架 ] Hibernate框架学习之二

    一.Hibernate持久化类的编写规范 1.什么是持久化类 Hibernate是持久层的ORM影射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么 ...

  5. j2ee开发之hibernate框架学习笔记

    hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换 ...

  6. hibernate框架学习笔记6:事务

    MySQL的事务.JDBC事务操作: 详细见这篇文章:比较详细 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hibernate中配置隔离级别: ...

  7. hibernate框架学习笔记3:API详解

    Configuration对象: package api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur ...

  8. [ SSH框架 ] Hibernate框架学习之三

    一.表关系的分析 Hibernate框架实现了ORM的思想,将关系数据库中表的数据映射成对象,使开发人员把对数据库的操作转化为对对象的操作,Hibernate的关联关系映射主要包括多表的映射配置.数据 ...

  9. hibernate框架学习之核心API

    ConfigurationSessionFactorySessionTransactionQueryCriteria Configuration Configuration对象用于封装Hibernat ...

随机推荐

  1. springcloud配置需要主要的地方

    Eureka服务端 注册中心 <!-- Eureka服务端 --> <dependency> <groupId>org.springframework.cloud& ...

  2. Golang基础语法1

    打开cmd命令窗口 保存,编译,执行: 1.保存到一个×××.go的文件(我这里保存到  E:\GoTest\hello.go   下) 2.编译,在命令提示符中执行命令: go build -o E ...

  3. java读大文件最快性能【转】

    java读大文件最快性能 完全引用自: 几种读大文件方法的效率对比测试 据说1.88g只要5秒左右,未亲测. /** * 读大文件 * BufferedReader + char[] * @throw ...

  4. 转--select/poll/epoll到底是什么一回事

    面试题:说说select/poll/epoll的区别. 这是面试后台开发时的高频面试题,属于网络编程和IO那一块的知识.Android里面的Handler消息处理机制的底层实现就用到了epoll. 为 ...

  5. System.ComponentModel.DataAnnotations.Schema.TableAttribute 同时存在于EntityFramework.dll和System.ComponentModel.DataAnnotations.dll中

    Entity Framework 与 .net4.5 的 System.ComponentModel.DataAnnotations 都有 System.ComponentModel.DataAnno ...

  6. SQL结构化查询语句

    SQL结构化查询语句 SQL定义了查询所有关系型数据库的规则. 1.通用语法 SQL语句可以单行或者多行书写,以分号结尾 可以使用空格和缩进增强可读性 不区分大小写,但是关键字建议大写 3种注释 注释 ...

  7. linux centos 7 nodejs 的安装

    先SSH 进到终端 随便一目录,或者/temp下 下载nodejs: (如果下载不了,官网 https://nodejs.org/en/download/复制LINUX版本的链接过来) wget ht ...

  8. Java入门系列 Lambda表达式

    https://blog.csdn.net/bitcarmanlee/article/details/70195403

  9. javascript给定了日期如何获得星期几

    1.这可以用JavaScript的Date对象的getDay方法.如:获取当天是星期几,则为:new Date().getDay();//返回0-6,0对应星期天,1-6对应星期一到星期六2.如果想给 ...

  10. SSR搭建服务器

    SSR搭建服务器一站式教程:https://ssr.tools/252