saveOrUpdate和merge的区别在于调用saveOrUpate方法后对象变为持久态,而调用merge方法后对象变为脱管态。
hibernate中有三种对象状态,分别是瞬时态,持久态和脱管态。
1.瞬时态
transient 数据库中没有数据与之对应,超过作用域会被JVM回收,一般是new出来的与session无关的的对象。
2.持久态
persistent数据库中有数据与之对应并与当前session有关联,并且相关联的session没有关闭数据库并且事务未提交。
持久态对象的改变在事务提交时会影响到数据库(hibernate能检测到并统一在事务提交时进行更新)
3.脱管态
detached数据库中有数据与之对应,但当前没有session与之关联,脱管状态改变hibernate不能检测到。
状态不同,调用的方法的不同。
脱管状态下更新数据库用update 方法;当不知是脱管还是瞬时状态时用SaveOrUpdate()或merge()方法来根据ID或version来确定最终是save
还是update。saveOrUpdate和merge的区别在于调用saveOrUpate方法后对象变为持久态,而调用merge方法后对象变为脱管态。
分享到:
相关推荐
Hibernate中的merge使用详情解说
merge的作用是:新new一个对象,如果该对象设置了ID,则这个对象就当作游离态处理: 当ID在数据库中不能找到时,用update的话肯定会报异常,然而用merge的话,就会insert。 当ID在数据库中能找到的时候,update与...
NULL 博文链接:https://dreamzhong.iteye.com/blog/1218885
Hibernate merge、update与saveOrUpdate方法的区别
ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析.doc
里面给大家内嵌了Araxis Merge v6.5和Araxis Merge 2017两个版本,并配备了使用说明。 Araxis Merge v6.5:免安装版本,解压直接运行merge.exe即可正常使用(目前好像不支持Win10系统了,但是我同事的win10可以用,...
Hibernate中session的merge以及update方法
Android中include和merge标签的基本使用方法
android中include和merge标记的区别和使用
merge 比较工具 merge 比较工具merge 比较工具
根据注释可以知道 merge 有两个职责: 1.如果对象为 unsaved,对对象的拷贝执行 save 方法,返回拷贝的对象。 2.如果对象为 detached,将对象的状态拷贝到和对象的标识一样的持久化对象中,如果持久化对象不存在,就...
免费Merge比较工具 win Merge
Araxis Merge 软件入门使用教程 Araxis Merge 软件入门使用教程 Araxis Merge 软件入门使用教程 Araxis Merge 软件入门使用教程 pdf
详细介绍了使用 BULK COLLECT 进行批量操作 提高sql的执行效率 使用MERGE INTO USING 一条sql搞定 新增和修改 使用connect by 进行递归树查询
做项目的时候通常版本与版本比较,因为下一个版本跟前一个版本差一点,可一般我们做多后查不出来,用WinMerge能很简单的查出来增加了哪里........
最新git项目开发中一键发起merge request工具,自动识别本地环境,支持windows、Linux、Mac,包含使用教程和资料。 非常简单的使用,下载脚本后,根据教程进行简单的配置,根据自己的操作系统类型,把注释部分选用...
WinMerge 3 ========== WinMerge 3 is a port of WinMerge (http://winmerge.org) to use cross-platform with Qt (http://qt.nokia.com/) framework. This project is still in very early stages. WinMerge 3 is...
WinMerge文件比较工具,WinMerge文件比较工具
Mybatis批量foreach merge into的用法,这是介绍Mybatis批量foreach merge into的用法的文档
Araxis Merge v6.5(含破解补丁),Araxis merge是windows下最优秀的merge软件