为什么要在ResultSet和Connection实例上调用close()?
当我不再需要在程序中使用那些ResultSet和Connection的实例时,为什么还要对它们都调用.close()方法呢?
不这样做有什么危险(如果有)?
回答:
这里有两个问题:
数据库连接
保持数据库连接打开会消耗数据库上的资源。它使用内存,并且数据库被配置为具有最大数量的连接,因此您增加了连接用尽的可能性。此外,会话的状态也得到维护,因此您可能会遇到意外锁定超出其预期范围的问题。
从积极的方面来说,准备好的语句将保持编译状态并可以使用,因此,如果您正确编码和使用SQL,则可以从重用准备好的语句中获得显着的性能收益。但是,这样做可能会使您的代码复杂化,建议您谨慎使用。
另外,获得连接非常昂贵,因此这就是存在连接池的原因。这些使连接保持打开状态,但是客户端获得连接,使用它们,然后在完成后将它们释放回池中。
结果集
保持结果集保持打开状态也可以使某些锁保持打开状态commit
(先关闭结果集,然后关闭结果集),因此,根据您的应用程序,您可能会迅速遇到死锁或严重的活动问题。不管您是否保持连接打开状态,请始终尽快关闭结果集,以将尽可能多的资源释放回数据库。
以上是 为什么要在ResultSet和Connection实例上调用close()? 的全部内容, 来源链接: utcz.com/qa/409955.html