gpt4 book ai didi

java - 多个方法调用中何时关闭连接

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:45 26 4
gpt4 key购买 nike

我有以下情况:

MethodA() calls MethodB()
MethodB() calls MethodC()

所有方法都必须对数据库执行一些查询。因此,为此,我创建一个连接对象并将其沿着方法链传递以重用该连接对象。

此处假设未使用连接池。

现在我的问题是,
应该只打开和重用一个连接,并在起点关闭(在上面的示例中,连接将在方法A中打开和关闭)?
还是
我应该为每个方法创建一个单独的连接?

重用连接似乎更好,但随后我必须保持连接打开,直到控件返回到 MethodA()。

我读到,重用连接更好,因为创建它们的成本很高。但后来我还了解到,最好尽快关闭连接,即在完成查询调用后。

哪种方法更好,为什么?

最佳答案

听起来您只是在查询数据库而不是更新或插入。如果是这种情况,那么您可以避免此类嵌套过程调用中的许多事务语义。

如果这是真的,那么只需连接一次,执行所有查询并关闭连接。虽然连接池的使用与您的问题有些正交 - 如果可以的话请使用一个。它们极大地简化了您的代码,因为您可以让池在向您提供连接之前自动测试连接。如果连接丢失(假设数据库被退回),它将自动创建一个新连接。

最后,您希望尽量减少创建数据库连接的次数,因为它的成本很高。然而,这通常并不简单。数据库本身仅支持最大连接数。如果有很多客户,那么您需要考虑这一点。如果您有一种简单的情况 - 一个数据库,而您的程序是唯一建立连接的程序,则打开该连接并在程序运行期间保持打开状态。这需要您对其进行验证,因此使用大小为 1 的数据库池可以避免这种情况。

关于java - 多个方法调用中何时关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38662984/

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