2015-09-18 70 views
4

我的問題很簡單。一個會話在交易完成之後可以重用嗎?Mybatis。會話在提交後可以重用嗎?

try (SqlSession session = sqlSessionFactory.openSession()) { 
// following 3 lines pseudocode for "doing some work" 
    session.insert(...); 
    session.update(...); 
    session.delete(...); 
    session.commit(); 

    session.insert(); 
    session.commit(); 
} 

或者在提交後關閉會話並打開新會話會更好嗎?

回答

2

我剛剛開始使用MyBatis,並且對會話管理也有類似的問題。以下是我迄今爲止學到的內容:

  1. 只要必要,會話應保持開放狀態,以完成交易,然後關閉。
  2. MyBatis提供會話級別的「本地」緩存,這可能會有利於您的應用程序的性能。當然,這取決於你的應用程序的設計,但通常你保持會話活動的時間越長,緩存就越好。 (MyBatis在提交和回滾時處理緩存刷新。)

對於您的簡單示例,可以保持會話對於這兩個事務處於打開狀態。在整個DAO層中有效地使用MyBatis會話意味着在這兩個準則之間找到平衡點。

走的時候走了過來會話管理和緩存的官方文檔:https://mybatis.github.io/mybatis-3/java-api.html#sqlSessions

+0

使用的MyBatis 3.2.8我與Oracle 12.1沒有工作在同一個會話多次提交,但看來與工作Oracle 11.2。對於第一個或第二個提交,它可以正常工作,但是隨後的提交會出現「java.sql.SQLException:訪問PooledConnection錯誤。連接無效」的錯誤。 – rimsky

相關問題