处理独立应用程序中的数据库连接

时间:2016-01-22 06:22:36

标签: java jdbc

我有一个独立的应用程序(没有应用程序/ Web服务器),有各种方法通过JDBC访问数据库。到目前为止,每个方法都打开(和关闭)数据库连接。不需要同时进行多个连接。

可是:

  • 由于性能的原因,每次创建一个新连接似乎都是个坏主意
  • 或者,使用单一连接似乎也是一个坏主意。

要走的路是什么?只有一个连接的连接池?

3 个答案:

答案 0 :(得分:2)

如果你正确配置,你可以通过使用连接池获得很多收益,最重要的是单个语句的性能 - 连接到数据库可以在几秒钟内测量。

同时除了初始池创建(您可能能够与其他初始化并行运行)之外,您仍然保持非常好的可靠性 - 因为池将检查结账时或之间的连接并丢弃中断的连接下。因此,您很可能能够在“未连接”的剧集中幸存下来。或类似的。

我认为使用单一连接可能是一个坏主意 - 因为您必须处理代码中的连接丢失/重新连接。

答案 1 :(得分:1)

即使您只有1个连接,也可以从连接池中获得一些好处:

  1. 连接池通常管理其连接的生命周期。例如,如果连接过时,将在其中创建一个新连接。这可以防止您必须处理代码中的生命周期事件。

  2. 连接池可以控制连接的打开和关闭。仅仅因为你在连接上调用close(),并不一定意味着连接被池关闭。它可以选择保持连接打开。如果您的应用程序不断打开和关闭连接,这可以提供性能优势。

答案 2 :(得分:-1)

不要仅为一个线程使用连接池。

对于标准JDBC连接池,在应用程序启动时会创建一个Connection对象池。也就是说,当连接池服务器启动时,它会创建预定数量的Connection对象。然后,池管理器使用这些对象,当不同客户端请求它们时将它们分散。当客户端不需要Connection对象时,将它们返回到池中。管理这项工作涉及大量资源。

如果整个过程中只使用一个连接,那么它基本上会浪费一点性能。 IMO,打开和关闭各个Connection对象将是更好的选择。尝试发送批量查询以补偿性能损失。