Hibernate Session實例剖析
在向大家詳細介紹Session之前,首先讓大家了解下如何獲得Session對象,然后全面介紹Hibernate Session實例。
Session(org.hibernate.Session)
(1) 單線程的,短壽命的對象,代表了一次會話的過程。實際上是把一個JDBC Connection打包了,它可以包含一些持久化對象的緩存看作介于數據連接與事物管理一種中間接口.
在Hibernate的設計者中.他們將session看作介于數據連接與事物管理的一種中間接口或者想象成一個持久對象的緩沖區hibernate能檢測到這些持久對象的改變,并及時刷新數據庫
(2) 每一個Hibernate Session實例和一個數據庫事務綁定通常將每一個Hibernate Session實例和一個數據處理庫事務綁定就是說,每執行一個數據庫事務(操作),都應該先創建一個新的Hibernate Session實例.
如果事務執行中出現異常,應該撤消事務.不論事務執行成功與否,最后都應該調用Session的close()方法,從而釋放Hibernate Session實例占用的資源.
(3) 如何獲得Session對象
首先創建SessionFactory對象應用服務器如果訪問多個數據源時,則應該產生多個SessionFactory;
但是僅僅為了服務與某個請求時,不要創建一個新的SessionFactory,因為創建SessionFactory需要消耗大量的資源.然后根據SessionFactory再創建Session對象
- Session session=sessionFactory.openSession();
- Transaction tx;
- try{
- tx=session.beginTransaction();//開始一個事務
- .......//執行事務
- tx.commit();
- }catch(Exception e){//如果出現異常就撤消事務
- if(tx!=null)
- tx.rollback();
- throw e;
- }
- finally//不管事務執行成功與否,最后都關閉Session并且放在finally中以提高安全性
- session.close();
【編輯推薦】