hibernate_sessionn核心方法


1)get 和 load 的區別


1.執行get方法會立即加載對象

   執行load方法,若不適用對象,不會立即執行查詢操作(即不會打印sql語句),而是返回一個代理類

   get是立即檢索,load是延遲加載

2.load可能會拋出懶加載異常:LazyInitializationException ,異常:在需要初始化代理對象之前就已經關閉了session

3.若數據表中沒有對應的數據

  get會返回null , load會拋出異常


2)save 方法

  1.使一個臨時對象變爲持久化對象

  2.爲對象非配ID

  3.在flush緩存時會發送一條insert語句

  4.在save方法之前設置id是無效的

  5.持久化對象的id是不能被修改的

3)persist方法

   當對一個OID(持久化對象id)不爲空的對象執行save方法時,會把該對象以一個新的對象保存到數據庫中,但執行persist方法時會拋出異常。

4)flush方法:使數據表裏的記錄和session緩存中的對象的狀態保存一致,爲了保存一致,則可能會發送對應的sql語句,

  1. 在Transactioon 的 commit()方法中:先調用session的flush方法,再提交事物

  2. flush方法會可能會發送SQL語句,但不會提交事物 

  3. 注意:在未提交事物或顯示的調用session.flush()方法之前,也有可能會進行flush()操作。

5)reflesh方法:跟flush相反,是把數據庫的數據同步到session緩存中去


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章