mybatis:Creating a new SqlSession Closing non transactional SqlSession


在springboot配置了mybatis、hikari數據庫連接池后,發現每次sql執行mybatis都有以下日志輸出:

Creating a new SqlSession,
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@254b32f0] was not registered for synchronization because synchronization is not active,
JDBC Connection [HikariProxyConnection@89697639 wrapping com.mysql.cj.jdbc.ConnectionImpl@2a3cf7b5]。

以為數據庫連接池沒有生效,就去看了一下。直接上結論:mybatis的sqlSession和數據庫連接池中維護的數據庫連接Collection不是同一個概念,SqlSession是mybatis框架中的概念,是mybatis持久層框架的頂層API。在sqlSession中操作數據庫的時候會去獲取collection,collection的獲取是去連接池中取的!所以Creating a new SqlSession並不是每次都去創建了數據庫新連接,底層使用的collection還是連接池提供的。至於每次sql執行,mybatis都Creating a new SqlSession而不是共享SqlSession,是為了保證sql會話獨立避免發生臟數據,從而保證sql線程安全。

參考如下:

https://blog.csdn.net/yzh_1346983557/article/details/115099740

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM