Hibernate的四種狀態

2021-08-27 08:59:22 字數 1055 閱讀 8788

hibernate  四種狀態:

臨時狀態,持久化狀態,游離狀態 ,刪除狀態

如何區分hibernate的幾種狀態:

1)物件是否在session快取中

2)在資料表中是否有記錄

可以上述條件進行組合的形式來窮盡四種種狀態,但是並不夠完全合理。因為四個狀態是可以進行轉換的,以資料儲存流程的形式來區分更為合理,同時也能夠使這四種狀態包含了物件可能的所有情況 , 

1:如果物件是剛new出來的,那就是臨時狀態,這個時候是沒有oid的,session中無,資料庫記錄無;

2:如果這個時候進行了儲存操作,或者從資料庫中載入,就會變成持久化狀態,這個時候有oid,session中有,資料庫記錄有;

3:處於持久化狀態,如果關閉session,就會變成游離狀態,這個時候有oid,session中無,資料庫中有(如果其他程式沒有把它刪除);

4:從持久化狀態執行delete或者游離狀態執行delete,變為刪除狀態,這個時候有oid,session中有或者無,資料庫記錄無;

其實上面按照2) 中session和資料庫記錄有、無的排列組合式也是可以區分的,只是不完全合理,同時有一種情況,即session無而且資料庫記錄無的情況,可能是臨時狀態,也可能是刪除狀態。

可以從**中看到:

// 狀態  

configuration configuration=null;

sessionfactory factory=null;

session session=null;

transaction transaction=null;

@test

public void test01()

@test

public void test02()

@test

public void test03()

如有不足多指教!

Activity的四種狀態

running狀態 乙個新的activity啟動入棧後,它在螢幕最前端,處於棧的最頂端,此時它處於可見並可和使用者互動的啟用狀態。paused狀態 當activity被另乙個透明或者dialog樣式的activity覆蓋時的狀態。此時它依然與視窗管理器保持連線,系統繼續維護其內部狀態,它仍然可見,但...

OGRE資源的四種狀態

未定義 遊戲程式啟動時所有資源的預設狀態,資源未被索引,所以ogre不知道它們的存在。已宣告 資源已被索引,ogre已經知道這些資源的存在,但它們還沒被初始化。平時我們讀取了資源配置檔案之後,資源就進入了這種狀態。未載入 資源已被初始化 被初始化的資源都生成了乙個分別對它們的引用 這些引用會占用小部...

activity的四種狀態說明

一 activity主要的四種狀態 running 執行 在螢幕前台 位於當前任務堆疊的頂部 paused 暫停 失去焦點但仍然對使用者可見 覆蓋activity可能是透明或未完全遮擋 stopped 停止 完全被另乙個activity覆蓋 destroyed 銷毀 退出,完全銷毀 二 事件方法鏈 ...