JDBC Connection的close方法

  • java.sql.Connection
    java.sql.Connection集成AutoCloseable接口,包含close方法,他的close方法是释放资源;使用Java 7以及更高版本实现接口后可以使用try-with-resource语法实现自动释放资源
  • javax.sql.PooledConnection
    也包含close方法,但是这个方法不是继承于AutoCloseable接口的,与上面提到的close方法不一样的是,连接池连接的close方法不一定就直接释放资源,也不是提供给调用方直接调用的方法,而是希望是连接池内部在管理连接的时候调用该实现。例如通过调用Druid连接池获得的连接的close方法,实际上并不一定是释放了IO资源,而是将连接重新回收到连接池中,Druid连接池获得的连接实际上实现了PooledConnection接口。
Closes the physical connection that this PooledConnection object represents. 
An application never calls this method directly;
 it is called by the connection pool module, or manager. 
  • 网上说的Connection是否要关闭的问题,这个问题需要分清楚Connection的实例是通过DataSource里面获取的PooledConnection实现还是Connection是通过Jdbc Driver获取的ConnectionImpl,例如mysql驱动里面的com.mysql.jdbc.ConnectionImpl实现,驱动获取的Connection没有连接池管理释放网络IO资源,所以必须要close掉,而PooledConnection的close方法实际上并不是释放IO资源,而是回收到连接池里面,因此即使没有close掉也是会回收到连接池里面,并不一定非要直接close(结合上面说到的PooledConnection接口标准的注释),当然写代码的时候还是close主动回收到连接池会更好。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 刚刚用一桶面皮和一个长条面包结束了自己的晚餐。 面包很好吃,18号放假的时候我要买两个带回家。我觉得老妈也一定...
    40169阅读 247评论 0 0
  • 1.NSUserDefaults 2.归档 浅谈iOS本地数据保存 - 简书 使用NSKeyedArichiver...
    一代骄马阅读 447评论 1 1
  • 夏日午后的图书馆里,我遇见了你。 你白衣粉裙,我握卷执笔。 桌旁的亚麻窗帘,风中摇曳,像我藏在书桌后慌乱的心。 这...
    二八吴攸阅读 275评论 0 3
  • css注释推荐:/xxxx/,双斜杠注释有时候并没有什么用。 ctrl+shift+/html注释: ctrl+...
    青檬眼豆豆阅读 269评论 0 0