为什么要在ResultSet和Connection实例上调用close()?

当我不再需要在程序中使用那些ResultSet和Connection的实例时,为什么还要对它们都调用.close()方法呢?

不这样做有什么危险(如果有)?

回答:

这里有两个问题:

数据库连接

保持数据库连接打开会消耗数据库上的资源。它使用内存,并且数据库被配置为具有最大数量的连接,因此您增加了连接用尽的可能性。此外,会话的状态也得到维护,因此您可能会遇到意外锁定超出其预期范围的问题。

从积极的方面来说,准备好的语句将保持编译状态并可以使用,因此,如果您正确编码和使用SQL,则可以从重用准备好的语句中获得显着的性能收益。但是,这样做可能会使您的代码复杂化,建议您谨慎使用。

另外,获得连接非常昂贵,因此这就是存在连接池的原因。这些使连接保持打开状态,但是客户端获得连接,使用它们,然后在完成后将它们释放回池中。

结果集

保持结果集保持打开状态也可以使某些锁保持打开状态commit(先关闭结果集,然后关闭结果集),因此,根据您的应用程序,您可能会迅速遇到死锁或严重的活动问题。不管您是否保持连接打开状态,请始终尽快关闭结果集,以将尽可能多的资源释放回数据库。

以上是 为什么要在ResultSet和Connection实例上调用close()? 的全部内容, 来源链接: utcz.com/qa/409955.html

回到顶部