weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
          數(shù)據(jù)加載中……

          《深入淺出Hibernate》讀書筆記(1)——實體對象生命周期

          最近正在研讀《深入淺出Hibernate》一書,前面寫的隨筆有些也是讀該書的筆記,只是未做歸類,從這篇開始,我將把相關的內容都整理成一個系列的讀書筆記。
                今天這篇是有關實體對象的生命周期。我剛開始接觸Hibernate的時候,只是簡單的把它當做一個API工具,直到后來看到有關VO和PO的內容時,才意識到Hibernate不僅僅是一個O/R Mapping的API工具,它還是一個容器。它可以幫你管理實體對象的生命周期。

                實體對象的生命周期有三種狀態(tài):
                1.Transient(自由狀態(tài))
                此時的實體對象和數(shù)據(jù)庫中的記錄無關聯(lián),只是一個普通的JavaBean。
                2.Persistent(持久狀態(tài))
                此時的實體對象和數(shù)據(jù)庫中的記錄有關聯(lián),其變更將由Hibernate固化到數(shù)據(jù)庫中。該實體對象處于由Hibernate框架所管理的狀態(tài)。
                3.Detached(游離狀態(tài))
                處于Persistent狀態(tài)的對象,其對應的Session實例關閉之后,那么,此對象就處于"Detached"狀態(tài)。Detached狀態(tài)和Transient狀態(tài)的區(qū)別在于Detached狀態(tài)的對象可以再次與某個Session實例相關聯(lián)而成為Persistent對象。

                從實體對象是否被納入Hibernate實體管理容器的角度,Transient和Detached狀態(tài)的實體對象可以統(tǒng)稱為VO(Value Object),而被管理的實體對象稱為PO(Persistent Object)。兩者的區(qū)別:
                1.VO是相對獨立的實體對象,處于非管理狀態(tài)。
                2.PO是Hibernate納入其實體管理容器(Entity Map)的對象,它代表了與數(shù)據(jù)庫中某條記錄對應的Hibernate實體,PO的變化在事務提交時將反映到實際數(shù)據(jù)庫中。
                3.如果一個PO與其對應的Session實例分離,那么此時,它又會變成一個VO。

                下圖是我畫的實體對象生命周期的狀態(tài)轉換圖:

          vopolife.JPG
          轉自:http://www.aygfsteel.com/georgehill/archive/2005/06/16/6224.html

          posted on 2005-07-28 12:55 weidagang2046 閱讀(176) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 江都市| 合肥市| 星座| 桃江县| 娄烦县| 平罗县| 中宁县| 乌鲁木齐县| 萍乡市| 康保县| 长治市| 延津县| 九江市| 绩溪县| 揭阳市| 华容县| 湘阴县| 明水县| 云梦县| 隆回县| 平乐县| 云和县| 汾西县| 土默特左旗| 九江市| 文登市| 锦州市| 阿合奇县| 阿图什市| 双牌县| 岳普湖县| 牟定县| 慈溪市| 武鸣县| 白银市| 雷波县| 清原| 灵台县| 深州市| 萝北县| 洞口县|