一般说来!游离对象与临时对象的区别在于:前者是由持久化对象转变过来的,因此可能在数据库中还存在对应的记录,而后者在数据库中没有对应的记录。
通常的区分方式应该是看对象里有没有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)是关键。
不太明白你的意思,你创建的临时对象对应数据库中的表了么,要是对应就能delete掉
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....