1.save
save的對象是臨時對象,首先將對象寫入緩存,使其變為持久對象。
save函數底層使用的是Insert語句,因此如果數據庫中已經存在相同ID的記錄,那么會報錯
2.update
update的對象是一個游離對象,將其更新為持久對象。如果已經存在一個相同ID的
持久對象,那么會報錯。
update底層使用的是update語句,因此如果數據庫中沒有相同ID的記錄,那么會報錯
3.merge
當我們使用update的時候,執行完成后,我們提供的對象A的狀態變成持久化狀態。
但當我們使用merge的時候,執行完成,我們提供的對象A還是脫管狀態,hibernate或者new了一個B,或者檢索到 一個持久對象B,並把我們提供的對象A的所有的值拷貝到這個B,執行完成后B是持久狀態,而我們提供的A還是托管狀態。