1. 程式人生 > >2018-10-22 hibernate載入策略

2018-10-22 hibernate載入策略

  1. 物件的三種狀態(hibernate管理的物件) 1.1 臨時狀態 1.2 持久狀態 1.3 遊離狀態

在這裡插入圖片描述

1、hibernate是通過管理物件來操作資料,這裡物件指的是持久化物件。 2、hibernate中的三種狀態的物件是可以相互轉換的,通常編碼時只關注持久 化物件。關注get、save、update方法所操作後的物件

  1. 一級快取、快照(orm特性) 所謂一級快取其實就是session級別的快取。
  • 1、使用者第一次訪問資料,拿到一條資料,它將資料形成一個快照儲存到session會話中,並且利用反射機制將值封裝到實體類中。
  • 2、當封裝好的持久化物件裡面的屬性值發生改變時,它會與session中的快照進行對比,如果 不一致那麼會進行修改更新

在這裡插入圖片描述

  1. 載入策略

    ssh專案常碰到報錯: could not initialize proxy(代理)[com.zking.one.entity.User#1] - no Session 通過get/load兩個方法講解載入策略 hibernate3以上,所有的關係查詢都是懶載入的策略

    什麼是懶載入的策略(效能高,不浪費資源) 在呼叫session會話的資料庫操作方法時,並不會直接生成sql語句去操作資料庫, 而是先建立一個代理物件,將oid(object id)存放在session的代理物件中, 當具體的要用到持久化的時候,才會生成sql語句進行查詢。

     	舉例說明代理模式:
     	 明星,相當於session
     	 經紀人-->接活動 proxy oid
     	 如果明星生病了,經紀人即使接活動明星也不能去做
    
  2. 併發控制 在資料庫加一列version,控制版本,從而在同一情況下進行對錶的修改

     update t_student set sname='zs1', version=version+1
          where sid = 8 and version=0
    

在這裡插入圖片描述