zoukankan      html  css  js  c++  java
  • merge and saveorupdate

    首先 saveOrUpdate返回void 也就是什么都不返回 而merge会返回一个对象

    merge 在执行session.merge(a)代码后,a对象仍然不是持久化状态,a对象仍然不会被关联到Session上 而update会持久化对象

    说白了:merge()用法替代了hibernate早期版本的saveOrUpdateCopy,因此该方法的作用只是将当前对象信息保存到数据库,并且不会将对象转换成持久化状态。

     merge只操作session缓存。

    merge 和saveOrUpdate不一样,当session中某持久化对象有id相同的两个纪录时,必须用merge,merge会在保存之前来合并记录,不然会报错。合并记录后的动作和saveOrUpdate一样。

    一、

    save()把瞬时状态转换成持久状态

    update()把游离状态转换成持久状态

    saveorupdate 会根据持久化对象的主键标识符判断执行save 还是update

    01如果有oid 执行update

    02如果没有oid 执行save

    merge :注意并不改变对象的状态

    01 如果对象处于瞬时状态,会将对象赋值一份到session缓存中,执行save

    02如果对象处于游离状态,执行update

    二 执行commit 时。会默认执行flush

  • 相关阅读:
    IEEEXtreme 10.0
    IEEEXtreme 10.0
    IEEEXtreme 10.0
    IEEEXtreme 10.0
    IEEEXtreme 10.0
    IEEEXtreme 10.0
    Python/Anaconda多版本共存的解决方案
    玩转树莓派
    通过远程桌面连接树莓派
    树莓派的初次启动设置
  • 原文地址:https://www.cnblogs.com/Hei-po/p/6958003.html
Copyright © 2011-2022 走看看