关闭和释放JDBC连接

背景

项目中使用jdbc 连接hive ,我看了下工具类,已经有一个获取Jdbc连接的方法了,这里没有用连接池,因为涉及到不同的租户,不同的权限。于是有了下面代码


        try {
            boolean isCreateTable = connection.prepareStatement(buildTableSql).execute();
            if (isCreateTable == true) {
            //中间省略处理过程
            ......
            }
            connection.close();
        } catch (Exception e) {
            logger.error("error", e);
            throw new RuntimeException(e);
        }

优化

后续发现这种事不可以的,如果在执行sql的时候报错,会直接跳到catch里面,而不会走connection.close(); 这个方法,如果不及时关闭连接的话,因为数据库连接时有限制的,如果连接不关闭,而且使用的人比较多,那么系统很快就down掉了。

所以优化的代码如下

try {
            boolean isCreateTable = connection.prepareStatement(buildTableSql).execute();
            if (isCreateTable == true) {
              //省略处理过程
            }
            connection.close();
        } catch (Exception e) {
            logger.error("error", e);
            throw new RuntimeException(e);
        }finally {
            try {
                if (connection != null) {
                    connection.close();
                }
            }catch (Exception e){}
        }

这样子的话,无论在正常还是异常或错误等情况下,连接均可以有效地关闭。

你可能感兴趣的:(关闭和释放JDBC连接)