成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring DataSourceUtils.getConnection與DataSource.ge

LiuZh / 1977人閱讀

摘要:總是從或連接池返回一個新的連接。的內(nèi)部也是通過來獲取連接的。在獲取連接后,如果當(dāng)前擁有事務(wù)上下文,則將連接綁定到事務(wù)上下文中。

DataSource.getConnection()總是從datasource或連接池返回一個新的連接。
通過調(diào)用 jdbcTemplate.getDataSource().getConnection()顯式獲取一個連接,這個連接不是方法事務(wù)上下文線程綁定的連接,所以如果開發(fā)者如果沒有手工釋放這連接(顯式調(diào)用 Connection#close() 方法),則這個連接將永久被占用(處于 active 狀態(tài)),造成連接泄漏!

Spring 提供了一個能從當(dāng)前事務(wù)上下文中獲取綁定的數(shù)據(jù)連接的工具類,那就是 DataSourceUtils。Spring 的 JdbcTemplate 內(nèi)部也是通過 DataSourceUtils 來獲取連接的。
DataSourceUtils 提供了若干獲取和釋放數(shù)據(jù)連接的靜態(tài)方法,說明如下:
static Connection doGetConnection(DataSource dataSource):首先嘗試從事務(wù)上下文中獲取連接,失敗后再從數(shù)據(jù)源獲取連接;
static Connection getConnection(DataSource dataSource):和 doGetConnection 方法的功能一樣,實際上,它內(nèi)部就是調(diào)用 doGetConnection 方法獲取連接的;
static void doReleaseConnection(Connection con, DataSource dataSource):釋放連接,放回到連接池中;
static void releaseConnection(Connection con, DataSource dataSource):和 doReleaseConnection 方法的功能一樣,實際上,它內(nèi)部就是調(diào)用 doReleaseConnection 方法獲取連接的;

DataSourceUtils.getConnection()它首先查看當(dāng)前是否存在事務(wù)管理上下文,并嘗試從事務(wù)管理上下文獲取連接,如果獲取失敗,直接從數(shù)據(jù)源中獲取連接。在獲取連接后,如果當(dāng)前擁有事務(wù)上下文,則將連接綁定到事務(wù)上下文中。
如果處于事務(wù)上下文中,那么開發(fā)者不需要顯示關(guān)閉或者釋放連接,但是如果 DataSourceUtils 在沒有事務(wù)上下文的方法中使用 getConnection() 獲取連接,依然會造成數(shù)據(jù)連接泄漏,這個時候就需要顯示release了 !

DataSourceUtils.releaseConnection(conn,jdbcTemplate.getDataSource());

參考:http://stackoverflow.com/ques...
https://www.ibm.com/developer...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66256.html

相關(guān)文章

  • Failed to validate a newly established connection異

    摘要:異常配置 異常 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...

    andot 評論0 收藏0
  • 由for update引發(fā)的血案

    摘要:微信公眾號后端進階,專注后端技術(shù)分享框架分布式中間件服務(wù)治理等等。 微信公眾號「后端進階」,專注后端技術(shù)分享:Java、Golang、WEB框架、分布式中間件、服務(wù)治理等等。 老司機傾囊相授,帶你一路進階,來不及解釋了快上車! 公司的某些業(yè)務(wù)用到了數(shù)據(jù)庫的悲觀鎖 for update,但有些同事沒有把 for update 放在 Spring 事務(wù)中執(zhí)行,在并發(fā)場景下發(fā)生了嚴(yán)重的線程阻...

    roundstones 評論0 收藏0
  • SpringBoot配置web訪問H2

    摘要:下面是我用到的方法使用的連接工具,具體操作方法就是按照要求配置連接,用戶名和密碼即可。使用進行查看,由于項目是的,所以在這里只需要修改相應(yīng)配置即可,由改為即可,啟動項目,然后在項目訪問路徑后面加上配置的就可以查看具體結(jié)果了 【前情提要】最近開始搭建博客,在本地調(diào)試的時候使用的數(shù)據(jù)庫是h2,但是調(diào)試的時候需要查看數(shù)據(jù)庫,本文也由此而來。 下面是我用到的方法: 使用IDEA的Databa...

    zhaochunqi 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<