代码之家  ›  专栏  ›  技术社区  ›  amarillion

混合基本数据源和连接池数据源:何时调用close()?

  •  0
  • amarillion  · 技术社区  · 15 年前

    我正在向java应用程序添加连接池。

    我最初的方法是在启动时使用依赖注入来决定是基本数据源还是连接池数据源。

    这个场景中的问题是我不知道何时调用connection.close()。我的理解是,在使用连接池时,应该在每次查询后关闭(),以便可以回收连接对象。但是当前的非池实现试图尽可能长时间地保持连接对象。

    这个问题有解决办法吗?有没有办法回收基本连接对象?如果不使用线程池连接对象调用connection.close(),会发生什么?

    或者将这两种连接策略混合在一起只是一种糟糕的设计?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Yishai    15 年前

    因此,我将回到这个问题背后的假设:事实上,您的并发性能问题是否与数据库池有关?如果您使用的是MySQL而不是Derby中的事务,那么这可能是并发性问题的一个重要原因,例如另一个潜在原因。

    要直接回答您的问题,请始终使用数据库池。它们的开销非常小,当然可以更改代码以快速释放连接(即,当请求完成时,例如,只要用户打开一个屏幕,就不需要),而不是永远保持连接。