hibernate 临时对象和游离对象的如何辨别

如题所述

第1个回答  2019-09-13
一般说来!游离对象与临时对象的区别在于:前者是由持久化对象转变过来的,因此可能在数据库中还存在对应的记录,而后者在数据库中没有对应的记录。
通常的区分方式应该是看对象里有没有oid,游离状态的对象是一定有oid的,但是初始状态的对象(你说的临时对象)有可能没有oid,因为这个oid可能是有数据库或是别的方式产生的。
目的:一个游离对象可以update
,一个临时对象update的话就要有oid,但是如果有的字段没有值的话,数据库会设置为null。
通常的区分方式应该是看对象里有没有oid,游离状态的对象是一定有oid的,但是初始状态的对象(你说的临时对象)有可能没有oid,因为这个oid可能是有数据库或是别的方式产生的。
目的:一个游离对象可以update
,一个临时对象update的话就要有oid,但是如果有的字段没有值的话,数据库会设置为null。
问题补充:robertliudeqiang
写道引用问题:一个对象有oid,而且这个oid是在数据库中存在的id,这个对象怎么判断游离还是临时?
说初始状态应该是这个对象在还没有插入到数据库时的对象,即使对象有oid,这个oid也是程序产生的,和数据库无关,数据库也没有这条记录。所以,你说对象的oid在数据库已经存在,我认为这个对象的状态就是游离状态。
引用但是想确认下是不是这样?有没有说法?
我没有研究过hibernate的源码,但是很多其它工具的源码都是类似的实现方式,我没法给明确的说法。
引用目的:一个游离对象可以update
,一个临时对象update的话就要有oid,但是如果有的字段没有值的话,数据库会设置为null。
好像都直接操作对象就行了,没有区分的必要。
举个例子:
User
user
=
new
User();
user.setId(12);//
id:
12
是数据库有的
user属于游离状态?
问题补充:robertliudeqiang
写道引用问题:一个对象有oid,而且这个oid是在数据库中存在的id,这个对象怎么判断游离还是临时?
说初始状态应该是这个对象在还没有插入到数据库时的对象,即使对象有oid,这个oid也是程序产生的,和数据库无关,数据库也没有这条记录。所以,你说对象的oid在数据库已经存在,我认为这个对象的状态就是游离状态。
引用但是想确认下是不是这样?有没有说法?
我没有研究过hibernate的源码,但是很多其它工具的源码都是类似的实现方式,我没法给明确的说法。
引用目的:一个游离对象可以update
,一个临时对象update的话就要有oid,但是如果有的字段没有值的话,数据库会设置为null。
好像都直接操作对象就行了,没有区分的必要。
举个例子:
User
user
=
new
User();
user.setId(12);//
id:
12
是数据库有的
user属于游离状态?
问题补充:robertliudeqiang
写道
User
user
=
new
User();
user.setId(12);//
id:
12
是数据库有的
user属于游离状态?游离状态的对象是hibernate维护的,前面已经说明,你自己生成的对象没有被hibernate维护,就不是游离状态的对象。
----------------------
根据自测后得出答案:
游离对象去除持久化标识(持久化标识可以认为映射表的主键)后变为临时对象。
临时对象对象添加持久化标识后变为游离对象。hibernate内部没有维护。
而。
上文所说的user为游离对象。持久化标识(id)是关键。over。
根据自测后得出答案:
游离对象去除持久化标识(持久化标识可以认为映射表的主键)后变为临时对象。
临时对象对象添加持久化标识后变为游离对象。hibernate内部没有维护。
上文所说的user为游离对象。持久化标识(id)是关键。

hibernate 临时对象和游离对象的如何辨别
通常的区分方式应该是看对象里有没有oid,游离状态的对象是一定有oid的,但是初始状态的对象(你说的临时对象)有可能没有oid,因为这个oid可能是有数据库或是别的方式产生的。目的:一个游离对象可以update ,一个临时对象update的话就要有oid,但是如果有的字段没有值的话,数据库会设置为null。通常的...

hibernate 对象是放到哪个缓存
在hibernate中实体类对象有三种状态 (1)瞬时态(临时态)瞬时态:即我们自己创建一个对象,还没有保存到数据库就叫临时态,其实也可以说是对像没有id值,跟session没有关系(或者是一级缓存中不存在),即是临时态。(2)持久态 持久态:即,此对象是我们从数据库中获取到的,即是持久太,简单的...

游离状态的对象和瞬时状态的对象有什么区别
Hibernate中对象的状态: 临时\/瞬时状态、持久化状态、游离状态。临时状态 特点:直接new出来的对象;不处于session的管理;数据库中没有对象的记录;持久化状态 当调用session的save\/saveOrUpdate\/get\/load\/list等方法的时候,对象就是持久化状态。处于持久化状态的对象,当对对象属性进行更改的时候,会反映到...

hibernate为什么用了saveOrUpdate该怎么用
临时对象,也就是不在Session里边,没有持久化标识,数据库中也没有对应的这个数据的记录,此时才能用save;持久化对象,在Session里边的,拥有持久化标识OID,此时的数据的内容只要修改,(ID)不能变,会引起数据此对象和数据库的联动,这是Hibernate通过同步来实现的。具体怎么实现,可参考对象的生命周期...

hibernate智能删除持久状态和游离状态的对象吗?我创建一个临时对象...
刚测试了一下,可以直接删除。不好意思。

NHibernate体系结构
NHibernate的体系结构如图1-51所示,它展示了如何通过数据库和配置文件为应用程序提供持久化服务,以及相关的对象管理。核心组件包括SessionFactory、Session、持久化对象、临时对象、事务和连接\/事务工厂。SessionFactory, 或者说是ISessionFactory,是Session的创建者,它依赖于ConnectionProvider以获取连接。它可以...

hibernate 里面总共有多少方法
此方法同时包含了save与update方法的功能,如果传入的参数是临时对象vo 没有id,就调用save方法;如果传 入的参数是游离对象有id,就调用update()方法;如果传入的参数是持久化对象po,就直接返回。7、update(Object entity) 更新实例的状态 实例必须为持久化状态 在程序中一般先用 Assert.notNull和 ...

用hibernate自动生成的attachDirty方法执行update为什么最后执行的是...
Hibernate的update和saveOrUpdate方法都是用于对跨Session的PO进行状态管理,它们的区别在于对PO采取何种策略。顾名思义,saveOrUpdate方法基本上就是合成了save和update方法,如果PO对象已经在session中持久化了,被改动后再在session中执行saveOrUpdate则会执行update方法(update);而如果PO对象是一个新创建的...

hibernate持久化有什么好处?
而媒介中的数据需要映射到业务数据模型,可以称为业务数据持久化。3 持久化的形式 是关系型数据库中的表,也可以是XML,也可以是Object等形式。Hibernate是针对RDBMS中的表 设计的框架 4 持久化处理可以是数据持久化,还可以是关系持久化,如面向对象的关系 有依赖关系、包含关系、继承关系等多种关系,...

2017年电视直播软件哪个好
我只下载了狗仔直播这么一款直播APP,据说狗仔直播收纳了几十家直播平台的直播资源,所有美女主播游戏直播,只要是全网直播都能找得到,真的很好用

相似回答
大家正在搜