<!--
事務隔離級別
hibernate.connection.isolation = 4
1-- Read uncommitted isolation
2-- Read committed isolation
4-- Repeatable read isolation
8-- Serializable isolation
-->
<property name="hibernate.connection.isolation">4</property>
在hibernate中,確保使用同一個session的問題,hibernate已經幫我們解決了. 我們開發人員只需要調用sessionFactory.getCurrentSession()方法即可獲得與當前線程綁定的session對象
調用getCurrentSession方法必須配合主配置中的一段配置
<!-- 設置hibernate中session與線程綁定 -->
<property name="hibernate.current_session_context_class">thread</property>
通過getCurrentSession方法獲得的session對象.當事務提交時,session會自動關閉.不要手動調用close關閉.
在Hibernate中,可以通過代碼來操作管理事務,如通過
“Transaction tx=session.beginTransactiong();”
開啓一個事務,持久化操作後,通過"tx.commit();" 提交事務;如果事務出現異常,又通過“tx.rollback();"操作來撤銷事務(事務回滾)。
到這裏我們已經設置了事務的隔離級別,那麼我們在真正進行事務管理的時候,需要考慮事務的應用場景,
也就是說我們的事務控制不應該是在DAO層實現的,應該在Service層實現