摘要:總是從或連接池返回一個新的連接。的內部也是通過來獲取連接的。在獲取連接后,如果當前擁有事務上下文,則將連接綁定到事務上下文中。
DataSource.getConnection()總是從datasource或連接池返回一個新的連接。
通過調用 jdbcTemplate.getDataSource().getConnection()顯式獲取一個連接,這個連接不是方法事務上下文線程綁定的連接,所以如果開發者如果沒有手工釋放這連接(顯式調用 Connection#close() 方法),則這個連接將永久被占用(處于 active 狀態),造成連接泄漏!
Spring 提供了一個能從當前事務上下文中獲取綁定的數據連接的工具類,那就是 DataSourceUtils。Spring 的 JdbcTemplate 內部也是通過 DataSourceUtils 來獲取連接的。
DataSourceUtils 提供了若干獲取和釋放數據連接的靜態方法,說明如下:
static Connection doGetConnection(DataSource dataSource):首先嘗試從事務上下文中獲取連接,失敗后再從數據源獲取連接;
static Connection getConnection(DataSource dataSource):和 doGetConnection 方法的功能一樣,實際上,它內部就是調用 doGetConnection 方法獲取連接的;
static void doReleaseConnection(Connection con, DataSource dataSource):釋放連接,放回到連接池中;
static void releaseConnection(Connection con, DataSource dataSource):和 doReleaseConnection 方法的功能一樣,實際上,它內部就是調用 doReleaseConnection 方法獲取連接的;
DataSourceUtils.getConnection()它首先查看當前是否存在事務管理上下文,并嘗試從事務管理上下文獲取連接,如果獲取失敗,直接從數據源中獲取連接。在獲取連接后,如果當前擁有事務上下文,則將連接綁定到事務上下文中。
如果處于事務上下文中,那么開發者不需要顯示關閉或者釋放連接,但是如果 DataSourceUtils 在沒有事務上下文的方法中使用 getConnection() 獲取連接,依然會造成數據連接泄漏,這個時候就需要顯示release了 !
DataSourceUtils.releaseConnection(conn,jdbcTemplate.getDataSource());
參考:http://stackoverflow.com/ques...
https://www.ibm.com/developer...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66256.html
摘要:異常配置 異常 2016-08-04T07:49:39.261362554Z 2016-08-04 15:49:39 [http-nio-9099-exec-8] (ErrorController.java:24) - Could not get JDBC Connection; nested exception is java.sql.SQLException: Failed to...
摘要:微信公眾號后端進階,專注后端技術分享框架分布式中間件服務治理等等。 微信公眾號「后端進階」,專注后端技術分享:Java、Golang、WEB框架、分布式中間件、服務治理等等。 老司機傾囊相授,帶你一路進階,來不及解釋了快上車! 公司的某些業務用到了數據庫的悲觀鎖 for update,但有些同事沒有把 for update 放在 Spring 事務中執行,在并發場景下發生了嚴重的線程阻...
摘要:下面是我用到的方法使用的連接工具,具體操作方法就是按照要求配置連接,用戶名和密碼即可。使用進行查看,由于項目是的,所以在這里只需要修改相應配置即可,由改為即可,啟動項目,然后在項目訪問路徑后面加上配置的就可以查看具體結果了 【前情提要】最近開始搭建博客,在本地調試的時候使用的數據庫是h2,但是調試的時候需要查看數據庫,本文也由此而來。 下面是我用到的方法: 使用IDEA的Databa...
閱讀 3278·2023-04-26 00:57
閱讀 600·2021-10-08 10:05
閱讀 1345·2021-09-08 09:36
閱讀 4148·2021-08-12 13:31
閱讀 2542·2019-08-30 15:55
閱讀 2237·2019-08-30 15:55
閱讀 1013·2019-08-30 15:55
閱讀 2684·2019-08-29 13:17