Hibernate中的Session有多個方法,下面對Session的常用方法進行一下簡單的介紹:
查詢方法get和load
get方法:不支持lazy(延遲加載),查詢數據不存在時返回null
load方法:默認支持lazy(可以設置為不支持),查詢數據不存在時返回objectNotFoundException異常。
添加方法save
session.save(obj)插入你實體類的對象。然後運用Hibernate的sql語句進行insert操作(未提交)。
清除方法Evict和Clear
session.evict(obj)會把指定的緩沖對象進行清除。
session.clear()把緩沖區內的全部對象清除,但不包括操作中的對象。
Flush方法
session.flush()可以強制進行從內存到數據庫的同步。
對這幾個方法有所了解後,來看一下他們的執行順序:
(1)生成一個事務的對象,並標記當前的 Session 處於事務狀態(注:此時並未啟動數據庫級事務)。
(2)應用使用 session.save 保存對象,這個時候 Session 將這個對象放入 entityEntries 。
(3)session.evict 將對象從 session會話中拆離,這時 session 會從 entityEntries 中將這個對象移出。
(4)事務提交,需要將所有緩存 flush 入數據庫, Session 啟動一個事務,並按照 insert,update,……,delete 的順序提交所有之前登記的操作。
(注意:所有 insert 執行完畢後才會執行 update ,如需要控制操作的執行順序,要善於使用 flush )