美文网首页
关于JDBC资源释放的问题探究

关于JDBC资源释放的问题探究

作者: 早点起床晒太阳 | 来源:发表于2020-08-20 10:51 被阅读0次

参考资料
https://stackoverflow.com/questions/2225221/closing-database-connections-in-java

前言

关于JDBC资源的释放这块,我们应该怎么释放呢? 只关闭Connection,还是连同Statement和ResultSet一起关闭呢?
在不同的场景下,比如连接池的操作下这些又应该怎么办呢?

解决

1、源码介绍查看

首先的话肯定Connection肯定是需要先关闭的。所以我查看了ResultSet和Statement的close方法源码解释

ResultSet 接口的

<P><B>Note:</B> A <code>ResultSet</code> object is automatically closed by the <code>Statement</code>
object that generated it when that <code>Statement</code> object is closed

说明resultSet会随着Statement关闭而自动关闭

查看Statement接口的close方法,发现Statement没有会自动关闭什么的相关介绍。

继续查看Connection接口的close方法,发现也没有关闭Connection会将什么隐式关闭的介绍。

那么说明一点,资源释放的时候,我们只需要将connection和 Statement关闭就好了

2、文档查看

后来又去查看文档,
https://stackoverflow.com/questions/2225221/closing-database-connections-in-java
发现关于释放连接这块还有不同的说法。关于连接池的,关于不同数据库不同情况的,大家有兴趣可以看下相关的文章。

3、总结

一圈看下来,总结了下,还是将所有的都关闭,按照ResultSet、Statement、Connection的顺序去依次关闭。
可能会麻烦了点,但是这样总不会有内存泄露之类的隐患存在。这样总不会出错。

2、资源释放模板

资源释放的代码要放到finally代码块里,这样防止在代码出现异常执行不到close的情况,造成资源释放不了。
模板如下所示 (在我们使用的时候,我们可以将其封装成方法,直接调用,这样也很方便)

    try {
        if (resultSet != null) {
            resultSet.close();
        }
    } catch (Exception e) {
    }
    try {
        if (statement != null) {
            statement.close();
        }
    } catch (Exception e) {
    }
    try {
        if (connection != null) {
            connection.close();
        }
    } catch (Exception e) {
    }

相关文章

  • 关于JDBC资源释放的问题探究

    参考资料https://stackoverflow.com/questions/2225221/closing-d...

  • MySQL 基础 10 JDBC的资源释放

    1.1JDBC的资源释放   JDBC程序执行结束后,将与数据库进行交互的对象释放掉,通常是ResultSet,S...

  • Mybatis:传统jdbc问题以及mybatis的解决方案(一

    1.1 分析JDBC操作问题 JDBC问题总结: 原始jdbc开发存在的问题如下: 1、 数据库连接创建、释放频繁...

  • JDBC连接池&DButils

    一、JDBC连接池 概念:实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决这个问题,通过...

  • JDBC到持久层框架mybatis简单封装思路

    观察上述JDBC代码,会发现如下几个问题:1.数据库连接创建,释放资源频繁,造成资源浪费,影响系统性能。2.存在硬...

  • MyBatis 简介

    1. MyBatis 简介 1.1 JDBC 存在的问题 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能...

  • 2018-07-11 Mybatis

    数据库语句的区分 5.10. Mybatis解决jdbc编程的问题1、 数据库连接创建、释放频繁造成系统资源浪费...

  • 自定义持久化框架

    1. 分析jdbc操作问题 1.1 数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能。1.2 Sq|语句...

  • icebreaker_of_mybatis

    复习一下jdbc mybatis可以解决问题 ​ 1、 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,...

  • SSM mybatis 2

    1 JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的? 1 数据库连接,释放频繁造成系统资源浪费,影...

网友评论

      本文标题:关于JDBC资源释放的问题探究

      本文链接:https://www.haomeiwen.com/subject/jersjktx.html