程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Hibernate(六)__對象的三種狀態,hibernate三種

Hibernate(六)__對象的三種狀態,hibernate三種

編輯:JAVA綜合教程

Hibernate(六)__對象的三種狀態,hibernate三種


瞬時(transient):數據庫中沒有數據與之對應,超過作用域會被JVM垃圾回收器回收,一般是new出來且與session沒有關聯的對象。

持久(persistent):數據庫中有數據與之對應,當前與session有關聯,並且相關聯的session沒有關閉,事務沒有提交;

          持久對象狀態發生改變,在事務提交時會影響到數據庫(hibernate能檢測到)。

 (當對象save後,會將數據持久化,這時obj.set()後再提交事務hibernate會檢測到數據的修改。

而如果在save這個對象之前(即使是處在事務中),也即是還沒有持久化這個對象之前,用obj.set()則hibernate不能檢測到數據修改,不會影響數據庫)

脫管/游離(detached):數據庫中有數據與之對應,但當前沒有session與之關聯;脫管對象狀態發生改變,hibernate不能檢測到。

hibernate對象的三種狀態,轉換圖:

Commit()會關閉session

面試圖:如果判斷一個對象處於怎樣的狀態?

主要的依據是: 1. 看該對象是否處於session, 2, 看在數據庫中有沒有對應的記錄

總結:

瞬時態: 沒有session管理,同時數據庫沒有對應記錄

持久態: 有session管理,同時在數據庫中有記錄

脫管態/游離態: 沒有session管理,但是在數據庫中有記錄.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved