20
  • What are the benefits of using a JDBC connection pooling tool like DBCP or c3p0 ?

  • in case of a small CRUD application with one user, can we just create one connection session as a singleton ?

PS: I'm building a small javafx application back-ended with tiny h2 database (5 tables).

4

2 回答 2

12

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

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

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

以下来自Kent Boogaart 的回答

我对 c3p0 不熟悉,但是池化连接和语句的好处包括:

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

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

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

于 2013-04-18T21:08:16.297 回答
2

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

于 2013-04-18T21:09:37.443 回答