我有以下情况:
bar_len
所有方法都必须对DB执行一些查询。因此,为此,我创建了一个连接对象,并沿着方法链传递它以重用连接对象。
这里假设连接池 不是 。
现在我的问题是,如果只有一个连接被打开并重新使用并在起始点关闭(在上面的例子中,连接将在MethodA中打开和关闭)?
或
我应该为每种方法创建一个单独的连接吗?
重用连接似乎更好,但是我必须保持连接打开,直到控件返回到MethodA()。
我已经读过重新使用连接更好,因为创建它们很昂贵。但后来我也读到,最好尽快关闭连接,即一旦完成查询调用。
哪种方法更好,为什么?
答案 0 :(得分:0)
听起来你只是查询数据库而不是更新或插入。如果是这种情况,那么在这种嵌套过程调用中避免许多事务语义。
如果是这样,那么只需连接一次,执行所有查询并关闭连接。虽然连接池的使用与您的问题有些正交 - 如果可以,请使用一个。它们极大地简化了代码,因为您可以让池在给出连接之前自动测试连接。如果连接丢失,它将自动创建一个新连接(假设因为数据库已被退回)。
最后,您希望最小化创建数据库连接的次数,因为它很昂贵。然而,这通常是非平凡的。数据库本身仅支持最大数量的连接。如果有很多客户,那么您需要考虑这一点。如果您有一个简单的案例 - 一个数据库和您的程序是唯一一个建立连接的程序,那么打开连接并在程序期间保持打开状态。这将要求您验证它,因此使用大小为1的数据库池可以避免这种情况。