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

Java 在独立应用程序中处理数据库连接,java,jdbc,Java,Jdbc,我有一个独立的应用程序(没有应用程序/web服务器),它具有通过JDBC访问数据库的各种方法。到目前为止,每个方法都会打开(和关闭)数据库连接。不需要同时进行多个连接 但是: 由于性能原因,每次创建一个新连接似乎都不是一个好主意 或者,使用单一连接似乎也是一个坏主意 怎么走?仅针对一个连接的连接池 即使只有一个连接,您也可以从连接池中获得一些好处: 连接池通常管理其连接的生命周期。例如,如果一个连接失效,将在其所在位置创建一个新的连接。这样可以避免您必须在代码中处理生命周期事件 连接池可以控

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

但是:

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

怎么走?仅针对一个连接的连接池

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

  • 连接池通常管理其连接的生命周期。例如,如果一个连接失效,将在其所在位置创建一个新的连接。这样可以避免您必须在代码中处理生命周期事件

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


  • 不要只对一个线程使用连接池

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


    因此,如果整个过程中只使用一个连接,这基本上是在浪费一些性能方面的资源。依我看,打开和关闭单个连接对象将是一个更好的选择。尝试发送批处理查询以补偿性能损失。

    如果您配置正确,您可以通过使用连接池获得很多好处,尤其是单个语句的性能—连接到数据库可能需要几秒钟的时间

    同时,除了初始池创建(您可能能够与其他初始化并行运行)之外,您仍然保持着非常好的相关性,因为池将在签出时或签出之间检查连接,并丢弃发生故障的连接。所以你很有可能在“未连接”或类似事件中幸存下来


    我同意你的观点,使用单一连接可能是个坏主意,因为你必须处理代码中的所有连接丢失/重新连接问题。

    为什么使用单一连接是个坏主意?这与只有一个连接的池不同吗?(我能想到的是想要使用池的重新连接功能。这是一个长期运行的过程吗?)。这样,我就可以向它抛出一个属性文件并完成。@这样应用程序将运行数小时,单个数据库任务将在几秒钟内完成。问题可能是连接在此期间丢失。看见