1. 程式人生 > >hibernate物件及一級快取

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