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

时间:2013-04-18 21:05:21

标签: java jdbc threadpool connection-pooling h2

  • 使用DBCPc3p0等JDBC连接池工具有什么好处?

  • 如果小型CRUD 应用一个用户,我们可以创建一个连接会话作为单身人士

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

2 个答案:

答案 0 :(得分:12)

来自Jon Skeet对What is the benefit of Connection and Statement Pooling?的回答:

  

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

     

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

以下内容来自Kent Boogaart's answer

  

我不熟悉c3p0,但是汇集连接的好处   和陈述包括:

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

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

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

  6.   

答案 1 :(得分:2)

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