Hibernate Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分別是做什么的?有什么區別?


session的方法:

save(): insert

調用save方法之后,瞬時態對象可以變成持久態;

update():update

將游離態對象變為持久態

saveOrUpdate():insert or update

 

merge():

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

將游離態對象變為持久態。

lock():

lock()方法是把一個沒有更改過的脫管狀態的對象變成持久狀態。

persisit():

persist()方法保證當它在一個事務外部被調用的時候並不觸發一個INSERT語句,當需要封裝一個長會話流程的時候,persist()方法是很有必要的

對於persist()方法,按照官方文檔的說明:

① persist()方法把一個瞬時態的實例持久化,但是並不保證標識符被立刻填入到持久化實例中,標識符的填入可能被推遲到flush的時間;

② persist()方法保證當它在一個事務外部被調用的時候並不觸發一個INSERT語句,當需要封裝一個長會話流程的時候,persist()方法是很有必要的;

③ save()方法不保證第②條,它要返回標識符,所以它會立即執行INSERT語句,不管是在事務內部還是外部。

 

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

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

 

 

hibernate對象的三種狀態:瞬時態/持久態/游離態

 


免責聲明!

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



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