1. 程式人生 > 實用技巧 >通俗易懂的解釋Hibernate物件的三種狀態

通俗易懂的解釋Hibernate物件的三種狀態

HIbernate中java物件的三種狀態
瞬時狀態(Transient)
解釋:首先它是和資料庫沒有關係的,也就是說這個物件在資料庫中找不到對應的記錄,比如說我們有時在新增的時候,我們會new出來一個新的物件,然後去給他賦值,這個物件是要執行新增操作的,那麼這個物件在資料庫中是一定沒有對應關係的所以說這樣的物件我們稱之為瞬時狀態也叫臨時狀態,臨時狀態有一個最大的特點就是,他的id欄位是無效的,也就是說他的id要麼是空值要麼是一個不存在的值,所以我們可以認定這是一個跟資料庫毫無關係的物件,唯一可以執行的是就是將他儲存在資料庫裡面,和資料庫裡建立關係,最沒用的狀態
持久狀態(Persistent)


解釋:持久狀態在Hibernate設計中是最有用的狀態,那麼對於持久狀態的物件Hibernate會對他進行一個有效的監控,那麼當這個物件的屬性發生一些改變的時候,那麼HIbernate會對他自動的執行一些操作,比如說,我在更新的時候我把物件查出來,我改下屬性,那麼HIbernate會根據我所修改的情況,動態的生成一些sql語句,實際上我們查出來的那個物件就是處於持久化狀態的物件,根據我上面所說的也就是說HIbernate在一直監控著處於持久化狀態的物件,一旦它發現這個物件有變化,它就會根據變化的資料,進行合理的操作,所以說持久狀態在Hibernate中是最有用的狀態,那麼處於持久狀態的物件是會被新增到Session快取當中,Hibernate會一直監控著這個物件,總結這個狀態的物件它的資料時一定和資料庫裡面的資料相關聯的,並且這個物件新增到Hibernate的快取裡面
遊離狀態(Detached)
解釋:遊離狀態也叫脫管狀態,根據字面意思就是脫離管理,在上面的解釋中我們知道持久化狀態的物件是放在了Session的快取裡面,被管理起來了,也就是說脫管狀態就是沒在Hibernate的快取裡面,那麼脫管狀態有什麼意義呢,持久狀態的資料我們都知道我們可以得到很多的支援,比如說修改他的屬性,會產生更新,但是反過來講我現在並不想更新資料庫庫,而僅僅是為了展示,知識調整一下屬性值,如果是持久狀態的資料可能會帶來一些錯誤,所以我們可以把持久狀態置為遊離狀態,這樣一來我們就脫離了持久狀態,不用擔心HIbernate對資料進行了更新等一些操作
三種狀態之間的轉換
在這裡插入圖片描述