hibernate物件及一級快取
1. 物件的三種狀態(hibernate管理的物件)
1.1 臨時狀態
1.2 持久狀態
1.3 遊離狀態
1、hibernate是通過管理物件來操作資料,這裡物件指的是持久化物件。
2、hibernate中的三種狀態的物件是可以相互轉換的,通常編碼時只關注持久
化物件。關注get、save、update方法所操作後的物件
2. 一級快取、快照(orm特性)
u = {1 ww 20 2018-5-3 abcd} --> u = {1 qq 17 null xyz}
u' = {1 ww 20 2018-5-3 abcd}
所謂一級快取其實就是session快取:
1.使用者第一次訪問資料,拿到一條資料,它將形成一個快照儲存到session會話中,並且利用反
射機制將值封進實體類中。
2.當封裝好的持久化物件裡面的屬性值發生改變時,它會與session中快照進行對比,如果發生了
改變就會對資料庫進行修改。
3. 載入策略
3.1 立即載入
立即載入就是在通過get方法時直接生成sql程式碼找到這個物件並且賦值
3.2 延遲載入
延遲載入就是在通過load方法時先把id賦值給一個代理物件,不會直接載入屬性,
在通過gei方法時才生成sql程式碼進行修改或者查詢
代理物件
存單
LazyInitializationException
單例模式
飽漢模式
餓漢模式/懶漢模式
注意:可能出現的問題:
1.could not initialize proxy - no Session——翻譯為無法初始化沒有會話的代理物件
關閉了session會話但是還在通過代理物件查詢
4. 併發控制
version
update t_student set sname='zs1', version=version+1
where sid = 8 and version=0