<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 10.6\. 修改脫管(Detached)對象 很多程序需要在某個事務中獲取對象,然后將對象發送到界面層去操作,最后在一個新的事務保存所做的修改。 在高并發訪問的環境中使用這種方式,通常使用附帶版本信息的數據來保證這些“長“工作單元之間的隔離。 Hibernate通過提供`Session.update()`或`Session.merge()` 重新關聯脫管實例的辦法來支持這種模型。 ``` // in the first session Cat cat = (Cat) firstSession.load(Cat.class, catId); Cat potentialMate = new Cat(); firstSession.save(potentialMate); // in a higher layer of the application cat.setMate(potentialMate); // later, in a new session secondSession.update(cat); // update cat secondSession.update(mate); // update mate ``` 如果具有`catId`持久化標識的`Cat`之前已經被`另一Session(secondSession)`裝載了, 應用程序進行重關聯操作(reattach)的時候會拋出一個異常。 如果你確定當前session沒有包含與之具有相同持久化標識的持久實例,使用`update()`。 如果想隨時合并你的的改動而不考慮session的狀態,使用`merge()`。 換句話說,在一個新session中通常第一個調用的是`update()`方法,以便保證重新關聯脫管(detached)對象的操作首先被執行。 如果希望相關聯的脫管對象(通過引用“可到達”的脫管對象)的數據也要更新到數據庫時(并且也_僅僅_在這種情況), 可以對該相關聯的脫管對象單獨調用`update()` 當然這些可以自動完成,即通過使用_傳播性持久化(transitive persistence)_,請看[第 10.11 節 “傳播性持久化(transitive persistence)”](../Text/pr01_split_000.html "10.11\. 傳播性持久化(transitive persistence)")。 `lock()`方法也允許程序重新關聯某個對象到一個新session上。不過,該脫管(detached)的對象必須是沒有修改過的! ``` //just reassociate: sess.lock(fritz, LockMode.NONE); //do a version check, then reassociate: sess.lock(izi, LockMode.READ); //do a version check, using SELECT ... FOR UPDATE, then reassociate: sess.lock(pk, LockMode.UPGRADE); ``` 請注意,`lock()`可以搭配多種`LockMode`, 更多信息請閱讀API文檔以及關于事務處理(transaction handling)的章節。重新關聯不是`lock()`的唯一用途。 其他用于長時間工作單元的模型會在[第 11.3 節 “樂觀并發控制(Optimistic concurrency control)”](../Text/pr01_split_000.html "11.3\. 樂觀并發控制(Optimistic concurrency control)")中討論。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看