hibernate報錯:no currentsessioncontext configured!

來源:互聯網
上載者:User

標籤:ssi   多個   text   功能   驅動   jdb   不能   事務控制   csdn   

使用hibernate架構時候報錯:no currentsessioncontext configured!

 

  這個錯誤是當我們使用getCurrentSession();時候引起的,原因是currentSession配置錯誤,與事務有關,當我們使用currentSession的時候需要在hibernate.cfg.xml中進行如下事務配置:

 

  1、如果是本地事務:

    <property name="hibernate.current_session_context_class">thread</property>

 

  2、如果是全域事務

    <property name="hibernate.current_session_context_class">jta</property>

這樣配置一下就好了!

 

  當然,如果獲得session 對象時不使用的是 sessionFactory.getCurrentSession(),而是使用 sessionFactory.openSession()就不會出現這個錯誤了。

 

  說一下getCurrentSession()和openSession()方法的區別:

 

    openSession()是不管任何情況都重新開啟一個Session,而getCurrentSession();相對的增加了一個判斷,在有Session的情況下就會直接去調用,沒有session的話才會建立,如果有事務操作的話getCurrentSession();更好一些,很容易的使得一個線程只有一個session對象。

 

  本地事務和jta事務:

 

    本地事務:使用 JDBC 事務界定時,您可以將多個 SQL 陳述式結合到一個事務中。JDBC 事務的一個缺點是事務的範圍局限於一個資料庫連接。一個 JDBC 事務不能跨越多個資料庫。

 

    jta事務:JTA是一種高層的,與實現無關的,與協議無關的API,應用程式和應用伺服器可以使用JTA來訪問事務。
  JTA允許應用程式執行分散式交易處理——在兩個或多個網路電腦資源上訪問並且更新資料,這些資料可以分布在多個資料庫上。JDBC驅動程式的JTA支援極大地增強了資料訪問能力。

 

    區別:JDBC事務控制的局限性在一個資料庫連接內,但是其使用簡單;JTA事務的功能強大,事務可以跨越多個資料庫或多個DAO,使用較複雜。

hibernate報錯:no currentsessioncontext configured!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.