为什么我们需要JDBC的连接池?

  • 使用像DBCP或c3p0这样的JDBC连接池工具有什么好处?

  • 如果一个用户有一个小型CRUD应用程序,我们可以创建一个连接会话作为单例吗?

PS :我正在构建一个小型的javafx应用程序后端使用小型h2数据库(5个表)。

来自Jon Skeet的回答是什么是连接和语句池的好处? :

创建与数据库服务器的网络连接(相对)昂贵。 同样要求服务器准备SQL语句(相对)昂贵。

使用连接/语句池,您可以重用现有连接/预准备语句,从而避免启动连接,解析SQL等的成本。

以下是Kent Boogaart的回答 :

我不熟悉c3p0,但汇集连接和语句的好处包括:

  1. 性能。 连接到数据库既昂贵又缓慢。 池化连接可以物理连接到数据库,并在需要数据库访问的各种组件之间共享。 这样,连接成本支付一次,并在所有消费组件中摊销。

  2. 诊断。 如果您有一个负责连接数据库的子系统,则诊断和分析数据库连接使用情况变得更加容易。

  3. 可维护性。 同样,如果您有一个负责分发数据库连接的子系统,那么与每个组件连接到数据库本身相比,您的代码将更容易维护。

创建连接成本很高,为每个可能只需几毫秒的事务创建新连接没有意义。 管理池中的数据库连接意味着应用程序可以以避免连接创建时间的方式执行数据库事务(仍然需要创建连接,但它们都是在启动时创建的)。 缺点是如果所有连接都在使用,并且需要另一个连接,则请求线程必须等到连接返回到池。