如何理解Hibernate的持久化?

學習Hibernate,必需要理解什麼是持久化?結合了一下網上的各位大佬的觀點和本身的理解:數據庫

持久化概念

持久化是將程序數據在持久狀態和瞬時狀態間轉換的機制。通俗的講,就是瞬時數據(好比內存中的數據,是不能永久保存的)持久化爲持久數據(好比持久化至數據庫中,可以長久保存)。緩存

而Hibernate是對JDBC的輕量級封裝,其持久化就是一個把數據存儲到數據庫的過程,也就是說,能夠將Hibernate的持久化通俗地理解爲:把內存中的對象保存到數據庫裏去,須要的時候再從數據庫裏拿出來。(即把緩存中的東西放到數據庫中使之能夠持久存在。)session

 

3種狀態

實體類對象在Hibernate中有3種狀態,分別是:瞬時狀態、持久狀態和脫管狀態。學習

  • 瞬時 :指的是沒有和hibernate發生任何關係,在數據庫中也沒有對應的記錄,一旦JVM結束,這個對象也就消失了。 
  • 持久 :指得是一個對象和hibernate發生聯繫,有對應的session,而且在數據庫中有對應的一條記錄 。
  • 脫管 :指的是一個對象雖然在數據庫中有對應的一條記錄,可是它所對應的session已經關閉了。

 

持久化對象的特徵

持久化的對象具備如下特徵:hibernate

  • 存在於一個session事例的緩存中(可理解爲:持久化對象老是被一個session事例關聯)。
  • 持久化對象在數據庫中有相關記錄與之對應。
  • Session在清理緩存時,會根據持久化對象的屬性變化來同步更新數據庫。
  • 瞬時狀態——>持久化狀態:Session的save()方法。
  • 脫管狀態——>持久化狀態:Session的update() ,saveOrUpdate(),lock()方法。
相關文章
相關標籤/搜索