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

來源:互聯網
上載者:User

標籤:執行   方法   cat   持久化   rup   調用   insert   合并   游離態   

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對象的三種狀態:瞬時態/持久態/游離態

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.