【知識整理】Hibernate-管理Session

1.在Hibernate的配置文件中,hibernate.current_session_context_class屬性用於指定Session管理方式,可選值包括:

(1)thread:Session對象的生命週期與本地綁定線程
         注:若Session是由thread管理的,則在提交或回滾事務時,已經關閉。
(2)jta*:Session對象的生命週期與JTA事務綁定
(3)managed:Hibernate委託程序管理Session對象的聲明週期

2.Hibernate配置文件-hibernate.cfg.xml中進行如下配置選擇Session管理方式:

<property name="current_session_context_class">thread</property> //選擇Session管理方式爲thread
3.Hibernate按以下規則把Session與本地線程綁定。

(1)當一個線程(threadA)第一次調用SessionFactory對象的getCurrentSession()方法時,該方法會創建一個新的Session(sessionA)對象,把該方法與threadA綁定,並將sessionA返回.

(2)當threadA再次調用SessionFactory對象的getCurrentSession()方法時,該方法將返回sessionA對象.

(3)當threadA提交sessionA對象關聯的事務時,Hibernate會自動flush sessionA對象的緩存,然後提交事務,關閉sessionA對象,當threadA撤銷sessionA對象關聯的事務時,也會自動關閉sessionA對象。

(4)若threadA再次調用SessionFactory對象的getCurrentSession()方法時,該方法會又創建一個新的Session(sessionB)對象,把該對象與threadA綁定,並將sessionB返回。

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