1. openSession 從字面上能夠看得出來,是打開一個新的session對象,並且每次使用都是打開一個新的session,假如連續使用屢次,則得到的session不是同一個對象,而且使用完須要調用close方法關閉session。java
2. getCurrentSession ,從字面上能夠看得出來,是獲取當前上下文一個session對象,當第一次使用此方法時,會自動產生一個session對象,而且連續使用屢次時,獲得的session都是同一個對象,這就是與openSession的區別之一,簡單而言,getCurrentSession 就是:若是有已經使用的,用舊的,若是沒有,建新的。數據庫
注意 :在實際開發中,每每使用getCurrentSession多,由於通常是處理同一個事務(便是使用一個數據庫的狀況),因此在通常狀況下比較少使用openSession或者說openSession是比較老舊的一套接口了;api
對於getCurrentSession 來講,有如下一些特色:tomcat
1.用途,界定事務邊界session
2.事務提交會自動close,不須要像openSession同樣本身調用close方法關閉session分佈式
3.上下文配置(即在hibernate.cfg.xml)中,須要配置:spa
<property name="current_session_context_class">thread</property>hibernate
(須要注意,這裏的current_session_context_class屬性有幾個屬性值:jta 、 thread 經常使用 , custom、managed 少用 )orm
a).thread使用connection 單數據庫鏈接管理事務xml
b).jta (java transaction api) Java 分佈式事務管理 (多數據庫訪問),jta 由中間件提供(JBoss WebLogic 等, 可是tomcat 不支持)