gpt4 book ai didi

java - 何时关闭 JDBC 中的 Connection、Statement、PreparedStatement 和 ResultSet

转载 作者:IT老高 更新时间:2023-10-28 21:09:09 32 4
gpt4 key购买 nike

关于 JDBC 编码的几个问题:

  1. 对于单个客户端应用程序,我们是否需要连接池?
  2. 在开始时创建一个 Connection 并保持它处于 Activity 状态而不关闭它直到应用程序退出是一个好主意吗?为什么?
  3. PreparedStatementConnection 相关联,如果每次查询后我的连接都没有关闭,为什么不保持 PreparedStatement 活着并在其他方法?
  4. 如果我们为每个查询创建 PreparedStatement,数据库是否知道它是相同的 PreparedStatement 并在第一次之后忽略不必要的操作?
  5. PreparedStatement 是不是创建一次并重用多次语句?如果是,为什么每次都需要关闭?

我知道调用 close() 将释放资源。但是如果我们知道以后会用到它,为什么要发布它,然后再请求它呢?

多客户端应用程序怎么样?我们需要一个连接池,所以每次都需要创建和关闭Connection、StatementPreparedStatement

最佳答案

我个人会使用池,因为它会为您处理所有资源管理。如果您的连接要求发生变化,那么您可以轻松修改池配置。使用适当的池,您可以根据最佳实践打开/关闭连接和准备好的语句,并将资源管理留给池。

通常,在使用池时:

  • 关闭连接实际上只会将其返回到池中
  • 准备语句的行为将从 Connection 的语句缓存中检索先前准备的语句,或者如果没有可用的语句,则创建一个新语句并将其缓存以供以后使用。
  • 关闭 PreparedStatement 的行为实际上只是将其返回到连接的语句缓存中。

此外 - 根据池的实现 - 它可能会在发生资源泄漏时通知您,从而更容易识别代码中的此类问题。

查看示例实现的源代码,例如 DBCP - 看看它们是如何工作的很有趣。

关于java - 何时关闭 JDBC 中的 Connection、Statement、PreparedStatement 和 ResultSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1039419/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com