<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Hiberate 實體/持久化生命周期狀態 > 原文: [https://howtodoinjava.com/hibernate/hibernate-entity-persistence-lifecycle-states/](https://howtodoinjava.com/hibernate/hibernate-entity-persistence-lifecycle-states/) 如您所知, [**Hibernate**](//howtodoinjava.com/hibernate-tutorials/ "Hibernate Tutorials") 適用于應用使用`new`運算符創建的普通 Java 對象。 以原始形式(沒有注解),hibernate 將無法識別您的 java 類; 但是當使用所需的注解正確注解它們時,hibernate 將能夠識別它們,然后使用它們,例如,存儲在數據庫中,更新它們等。這些對象可以說是用 Hiberate 映射的。 給定一個映射到 Hibernate 的對象的實例,它可以處于四種不同狀態中的任何一種:**瞬態,持久,分離或刪除**。 今天,我們將在本教程中學習它們。 ## 瞬態對象 瞬態對象存在于堆內存中。 Hibernate 不會管理瞬態對象,也不會對瞬態對象進行更改。 ![Transient objects are independent of Hibernate](https://img.kancloud.cn/4d/4d/4d4d1167c3fcea2eed12a83f84a87b0b_138x100.png) 瞬態對象獨立于 Hibernate 要持久保存對瞬態對象的更改,您必須要求會話將瞬態對象保存到數據庫,此時,Hibernate 會為該對象分配一個標識符,并將該對象標記為處于持久狀態。 ## 持久對象 持久對象存在于數據庫中,并且 Hibernate 管理持久對象的持久化。 ![Persistent objects are maintained by Hibernate](https://img.kancloud.cn/0f/e4/0fe485f4f08c5665fbef4e451a2d24af_475x106.png) 持久對象由 Hibernate 維護 如果字段或屬性在持久對象上發生更改,則當應用將更改標記為要提交時,Hibernate 將使數據庫表示保持最新狀態。 ## 分離的對象 分離的對象在數據庫中具有表示形式,但是對對象的更改將不會反映在數據庫中,反之亦然。 下圖顯示了對象與數據庫的臨時分離。 ![Detached objects exist in the database but are not maintained by Hibernate](https://img.kancloud.cn/ba/39/ba39b7f126f0dfb3a4ed3705eb2f7bb7_379x106.png) 分離的對象存在于數據庫中,但不能由 Hibernate 維護 可以通過關閉與之關聯的會話來創建分離的對象,或者通過調用該會話的`evict()`方法將其從會話中逐出。 您可能考慮這樣做的原因之一是從數據庫中讀取對象,修改對象在內存中的屬性,然后將結果存儲在數據庫以外的其他位置。 這將是對對象進行深層復制的替代方法。 為了保留對分離對象所做的更改,應用必須將其重新附加到有效的 Hibernate 會話。 當您的應用通過引用分離對象在新會話上調用`load`,`refresh`,`merge`,`update()`或 `save()`方法之一時,分離實例可以與新的 Hibernate 會話關聯。 調用之后,分離的對象將是由新的 Hibernate 會話管理的持久對象。 ## 刪除的對象 刪除的對象是由 Hibernate 管理的對象(換句話說,是持久對象),已傳遞給會話的`remove()`方法。 當應用將會話中保存的更改標記為要提交時,將刪除數據庫中與已刪除對象相對應的條目。 現在,我們不要記下本教程的要點。 ## 項目要點 1. 新創建的 POJO 對象將處于瞬態狀態。 瞬態對象不代表數據庫的任何行,即不與任何會話對象相關聯。 它是簡單的簡單 Java 對象。 2. 持久對象代表數據庫的一行,并且始終與某些唯一的 Hiberate 會話相關聯。 Hiberate 跟蹤對持久對象的更改,并在提交調用時將其保存到數據庫中。 3. 分離的對象是過去曾經持久化的對象,現在它們不再持久化。 要保留對分離對象所做的更改,必須將它們重新連接以 Hiberate 會話。 4. 刪除的對象是已傳遞給會話的`remove()`方法的持久對象,并且一旦將會話中保存的更改提交給數據庫,它們就會很快被刪除。 **祝您學習愉快!**
                  <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>

                              哎呀哎呀视频在线观看