Hibernate中Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法的區別


Hibernate的對象有三種狀態,分別是:瞬時態(transient)、持久態(persistent)、游離態(detached)

  1.瞬時態的實例可以通過調用save()、persist()或者saveOrUpdate()方法變成持久態

  2.游離態的實例可以通過調用 update()、saveOrUpdate()、lock()或者replicate()方法變成持久態

  3.save()和update()方法的區別在於前者是將瞬時態對象變成持久態,后者是將游離態對象變成持久態

  4.merge()方法可以完成save()和update()方法的功能,它的意圖是將新的狀態合並到已有的持久化對象上或創建新的持久化對象。

  5.lock()方法和update()方法的區別,update()方法是把一個已經更改過的脫管狀態的對象變成持久態,lock()方法是把一個沒有更改過的脫管狀態的對象變成持久態

  6. persist()方法把一個瞬時態的實例持久化,但是並不保證標識符被立刻填入到持久化實例中,標識符的填入可能被推遲到flush的時間persist()方法保證當它在一個事務外部被調用的時候並不觸發一個INSERT語句  

  7.saveOrUpdate()方法則是判斷對象是否已經存在,如若不存在,則將這個瞬時態對象變成持久態,如若存在,則將這個游離態對象持久化

  8.replicate()方法同樣是將游離態對象持久化,不同的是,假設你的對象的ID是用hibernate 負責生成的,但現在你想在數據庫中插入一條已經指定ID的記錄,這是就需要replicate()方法了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM