歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Hibernate中session的操作

Hibernate中session的操作

日期:2017/3/1 10:27:09   编辑:Linux編程

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 )

Copyright © Linux教程網 All Rights Reserved