日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Hibernate的各種保存方式的區(qū)別(3)

 WindySky 2007-10-10
五,saveOrUpdateCopy,merge和update區(qū)別

  首先說明merge是用來代替saveOrUpdateCopy的,這個詳細見這里

  http://www./dreamstone/archive/2007/07/28/133053.html

  然后比較update和merge

  update的作用上邊說了,這里說一下merge的

  如果session中存在相同持久化標識(identifier)的實例,用用戶給出的對象的狀態(tài)覆蓋舊有的持久實例

  如果session沒有相應的持久實例,則嘗試從數(shù)據(jù)庫中加載,或創(chuàng)建新的持久化實例,最后返回該持久實例

  用戶給出的這個對象沒有被關聯(lián)到session上,它依舊是脫管的

  重點是最后一句:

  當我們使用update的時候,執(zhí)行完成后,我們提供的對象A的狀態(tài)變成持久化狀態(tài)

  但當我們使用merge的時候,執(zhí)行完成,我們提供的對象A還是脫管狀態(tài),hibernate或者new了一個B,或者檢索到

  一個持久對象B,并把我們提供的對象A的所有的值拷貝到這個B,執(zhí)行完成后B是持久狀態(tài),而我們提供的A還是托管狀態(tài)

  六,flush和update區(qū)別

  這兩個的區(qū)別好理解

  update操作的是在脫管狀態(tài)的對象

  而flush是操作的在持久狀態(tài)的對象。

  默認情況下,一個持久狀態(tài)的對象是不需要update的,只要你更改了對象的值,等待hibernate flush就自動保存到數(shù)據(jù)庫了。hibernate flush發(fā)生再幾種情況下:

  1,調用某些查詢的時候

  2,transaction commit的時候

  3,手動調用flush的時候

  七,lock和update區(qū)別

  update是把一個已經(jīng)更改過的脫管狀態(tài)的對象變成持久狀態(tài)

  lock是把一個沒有更改過的脫管狀態(tài)的對象變成持久狀態(tài)

  對應更改一個記錄的內容,兩個的操作不同:

  update的操作步驟是:

 ?。?)更改脫管的對象->調用update

  lock的操作步驟是:

  (2)調用lock把對象從脫管狀態(tài)變成持久狀態(tài)——>更改持久狀態(tài)的對象的內容——>等待flush或者手動flush

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多