1.在對象中如果對象剛創建沒有被持久化的話那麼這樣對象的狀態就是臨時狀態(也叫自由狀態),
比如 student stu = new student("ss");這個時候對象就是處於臨時狀態,那麼爲什麼講是處於臨時狀態呢?因爲只是在jvm內存空間獲取一塊空間,還沒有在數據庫中處於
持久化狀態,那麼這時候對象就是那麼最大的特點是在數據庫不存在與他對應的記錄。。。。
處於臨時狀態的對象具有如下特點:
(1) 不和 Session 實例關聯
(2) 在數據庫中沒有和瞬時對象關聯的記錄
2.持久狀態 (Persistent)
持久化對象就是已經被保存進數據庫的實體對象,並且這個實體對象現在還處於Hibernate的緩存管理之中。這是對該實體對象的任何修改,都會在清理緩存時同步到數據庫中。如下所示:
custorm cst = new custorm("20","1");
tx = sesssion.beginTranction();
//創建對象
session.save(cst );
tx.commit();
這個時候cst就是持久化狀態,那麼這樣的對象能夠被hibetnate緩存管理,這樣就是持久狀態
特點:
(1)持久的實例在數據庫中有對應的記錄,並擁有一個持久化標識 (identifier).
(2) 和session相關聯的對象
自由狀態對象轉爲持久對象:
通過session對象的save或者saveorupdate()方法方法把一個自由狀態對象與數據庫相關聯,這個自由狀態對象就成爲持久化對象。
3.遊離狀態:
遊離最大的特徵就是對象脫離了hibernate緩存管理狀態,遊離狀態的與自由狀態的區別是:
自由狀態數據庫沒有與其對應的記錄,而遊離數據庫有一個對應的記錄但是脫離了hibernate緩存管理狀態,
遊離狀態的特點:下面是hibernate代碼:
//創建對象
student stu = new student("s");
//sesion啓動
tx = session.beginTranction();
//保存對象
session.save(stu);
//提交
tx.commit();
//關閉session
session.close(); //注意:關閉了緩存管理,這個時候對象就從持久狀態轉到遊離態
遊離狀態本質上跟那個臨時狀態是一樣的,但是比臨時狀態多了數據庫一個對應的一個記錄,那麼遊離狀態轉換爲臨時狀態只需要session.delete();
遊離狀態轉換爲持久化狀態只需要session.update(),
//將自身與數據庫記錄同步
持久化狀態轉換爲臨時狀態只需要session.delete(),
原文:http://blog.sina.com.cn/s/blog_ae50b9570101axfo.html