我的家園

          我的家園

          聲明

                  Session是一個持久化管理器,對數據庫進行操作之前,必須先取得Session實例,相當于JDBC在對資料庫操作之前,必須取得Connection實例,Session是Hibernate操作的基礎,它不是線程安全的,但是我們可以用ThreadLocal(用于存儲每一個線程的變量副本,Map中元素的鍵為線程對象,而值對應線程的變量副本,這樣使每一個線程都可以獨立地改變自己的副本,而不會和其它線程的副本沖突。)來保證線程的安全性。

          狀態描述         

                     1.      瞬時對象(Transient Object):

                             使用new操作符初始化的對象不能立刻就持久的。它們的狀態時瞬時的,也就是說它們沒有任何跟數據庫相關聯的行為,在數據庫中沒有與之匹配的記錄,還沒有讓session管理。

           

                      總結:

          1.   沒有被session管理

          2.   在數據庫中沒有與之匹配的記錄

                    2.      持久化對象(Persistent Object):

                             持久實例是任何具有數據庫標識的實例,它有持久化管理器Session統一管理,持久實例是在事務中進行操作的一一它們的狀態事務結束時同數據庫進行同步。當事務提交時,通過執行SQL的INSERT、UPDATE和DELETE語句把內存中的狀態同步到數據庫中。

                         總結:

          1.    納入session管理

          2.      在數據庫中有與之匹配的記錄

          3.      當屬性改變,在清理緩存是(臟數據檢查)會自動和數據庫同步

                         3.      離線對象(Detached Object):

                                  Session關閉之后,持久化對象變成為離線對象。離線表示這個對象不能再與數據庫保持同步,它們不能再接受hibernate管理

          總結:

          1.    沒有被Session管理

          2.    在數據中存在與之匹配的記錄

          圖例注解

                  文字有時候是蒼白的,如何更好展現自己的思維,需要我們借助圖形的力量,這樣我們的思維更加深刻,請看Session三種狀態圖,讓你知道狀態是如何進行轉化。

                 

                                                                      (通過一系列的方法,改變Session狀態)

                         三種狀態的區分:

          1.    有沒有ID,(如果沒有則是Transient狀態)

          2.    ID在數據庫中有沒有

          3.    在內存里有沒有(Session緩存)

          總結

                          想必大家對Session的狀態有了一定的了解,那我們就在總結一下,便于我們理解的區別。

                          Transient對象:隨時可能被垃圾回收器回收(在數據庫中沒有于之對應的記錄,應為是new初始化),而執行save()方法后,就變為Persistent對象(持久性對象),沒有納入session的管理。( 內存中一個對象,沒有ID,緩存中也沒有)

                          Persistent對象:在數據庫有存在的對應的記錄,納入session管理。在清理緩存(臟數據檢查)的時候,會和數據庫同步。( 內存中有、緩存中有、數據庫有(ID)
                           Detached對象:也可能被垃圾回收器回收掉(數據庫中存在對應的記錄,只是沒有任何對象引用它是指session引用),注引狀態經過Persistent狀態,沒有納入session的管理。(內存有、緩存沒有、數據庫有(ID) 

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 大冶市| 深水埗区| 钟祥市| 高唐县| 宁强县| 安陆市| 会宁县| 瑞金市| 凤山县| 澎湖县| 枣强县| 商水县| 虞城县| 将乐县| 海门市| 乾安县| 东辽县| 河北区| 满洲里市| 鄂托克旗| 古浪县| 高唐县| 广灵县| 尉犁县| 上饶市| 中超| 巴东县| 五寨县| 大邑县| 衢州市| 普宁市| 同江市| 西畴县| 肥乡县| 宁德市| 乐昌市| 江川县| 安塞县| 平山县| 甘德县| 临城县|