首頁 >Java >java教程 >Hibernate 中一級快取和快照區的理解

Hibernate 中一級快取和快照區的理解

巴扎黑
巴扎黑原創
2017-06-26 11:25:552288瀏覽

    剛開始的時候覺得這個快照區很難理解,網路上看了很多部落格之後,開始明白了。我是結合ADO.NET 理解的,在ADO.NET 中有一個類,

叫SqlCommandBuilder,在我看來,他就是ADO.NET 中和Hibernate 快照區對應的東西,這個SqlCommandBuilder 可以構建SQL 語句,當呼叫Update 方法之後,可以將資料庫中的資訊更新(包括更新和刪除),其中還必不可少的一個枚舉類,就是行狀態位RowState類,我將這個行狀態位元和Hibernate的對比(對比快取區和快照區)當成對應。只不過,當刷新快取區時,Hibernate 它做了一個比對快取區和快照區的內容(如果發現不同,就更新快照區,並儲存一條updata 的SQL 語句,如果執行的不是刷新操作,而是提交事務操作,那麼不僅會儲存這個updata語句,還會發送到資料庫執行這個updata 的SQL),而ADO.NET 沒有進行比對,而是進行了記錄(即改變了該行的RowStae 值),最後SqlCommandBuilder 根據這個狀態位和主鍵,更新到資料庫,其實,在某種角度下,比對也是一種做記錄(和修改行狀態位元類似),直到提交事務,就更新到資料庫。

 

加上一句,快照我理解為資料庫的快照(最初是資料庫某些行的的快照,然後一餐操作,這時就不再是資料庫的快照了,但提交交易後,又成了資料庫的一部分行的快照了。 #】

還有這個類別RowSate類別

也許我講的不夠明白,但目前的理解就是這樣。

以上是Hibernate 中一級快取和快照區的理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn