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

时间:2016-07-29 15:56:54

标签: java jdbc connection

我有以下情况:

bar_len

所有方法都必须对DB执行一些查询。因此,为此,我创建了一个连接对象,并沿着方法链传递它以重用连接对象。

这里假设连接池 不是

现在我的问题是,如果只有一个连接被打开并重新使用并在起始点关闭(在上面的例子中,连接将在MethodA中打开和关闭)?

我应该为每种方法创建一个单独的连接吗?

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

我已经读过重新使用连接更好,因为创建它们很昂贵。但后来我也读到,最好尽快关闭连接,即一旦完成查询调用。

哪种方法更好,为什么?

1 个答案:

答案 0 :(得分:0)

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

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

最后,您希望最小化创建数据库连接的次数,因为它很昂贵。然而,这通常是非平凡的。数据库本身仅支持最大数量的连接。如果有很多客户,那么您需要考虑这一点。如果您有一个简单的案例 - 一个数据库和您的程序是唯一一个建立连接的程序,那么打开连接并在程序期间保持打开状态。这将要求您验证它,因此使用大小为1的数据库池可以避免这种情况。