Hibernate merge和update的区别
今天做了個測試,寫了個測試用例來看看merge與update時控制臺打印出來的日志有什么不一樣。實體bean很簡單,就id和name兩個字段,接下來分別給出以下幾種測試情形的控制臺日志內容:?
1. 數據庫記錄已存在,更改person的name為一個新的name。?
merge方法打印出的日志如下:?
?
update方法打印出的日志如下:?
Hibernate: update person set name=??
where id=??
2. 數據庫記錄已存在,更改person的name和數據庫里對應id記錄的name一樣的值。?
?
3.?
數據庫記錄不存在時,也就是你傳的實體bean的ID在數據庫沒有對應的記錄。?
?
如果沒有對應的記錄,merge會把該記錄當作新的記錄來插入。此處我很疑惑,因為我傳得person實體對象里寫明了id值的,它為什么還會做插入的動作呢??
update方法打印出的日志如下:?
?
以下的內容摘抄自網上:?
當我們使用update的時候,執行完成后,我們提供的對象A的狀態變成持久化狀態。?
但當我們使用merge的時候,執行完成,我們提供的對象A還是脫管狀態,hibernate或者new了一個B,或者檢索到?
一個持久對象B,并把我們提供的對象A的所有的值拷貝到這個B,執行完成后B是持久狀態,而我們提供的A還是托管狀態
轉載于:https://www.cnblogs.com/zengda/p/4415447.html
總結
以上是生活随笔為你收集整理的Hibernate merge和update的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统isosize指令用法
- 下一篇: #并行优化# 容错算法 (Fault T