【JDBC】JDBC和连接池的关系

1. 前言

一直以为连接池是对JDBC的封装,今天再次回顾Java基础的时,才发现并非完全如此。连接池只是包装/操作了JDBC API 接口,然后再实际运行的时候,这些接口的具体实现则落到你指定的各种符合JDBC API的驱动包上。

下面是知乎上的一个图:JDBC和连接池的关系
【JDBC】JDBC和连接池的关系

2. JDBC和连接池的关系

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。简单说可以通过JDBC来访问数据库,

而连接池,可以认为他是游乐场的管理员,游乐场人比较多的时候,管理员就会控制入园的人数了。也就是说连接池是用来控制连接数据库的连接数,有效的防止拥堵。

3. 数据库连接池的原理

第一步,连接池的建立。一般系统初始化时,连接池会根据系统配置建立,并在池中创建了几个连接对象,以便使用时能从连接池中获取。连接池中的连接不能随意的创建和关闭,为了避免连接随意建立和关闭造成系统的开销。

第二步,连接池的管理。连接池管理策略是连接池机制核心,连接池内分配和释放对系统的性能有很大的影响。管理策略是:当客户请求数据库连接时,首先查看连接池中是否有空闲的连接,如果存在空闲连接,则将连接分配给客户使用;如果没有空闲连接,则查看当前所开的连接数是否已经达到最大的连接数,如果没有达到就重新创建一个连接给请求的客户;如果达到就按设定的最大时间进行等待,如果超出最大等待时间,则抛出异常给客户。

当客户释放数据库连接时,先判断该连接的引用次数是否超过规定值,如果超过就从连接池中删除该连接,否则保留为其他客户服务。该策略保证了数据库连接有效的复用,避免频繁的建立,释放连接所带来的系统资源的开销。

第三步,连接池的关闭 。当应用程序退出时,关闭连接池中的所有连接,释放连接池相关的资源,该过程正好与创建相反。

4. 连接池的优点

1,减少连接创建时间。连接池中的连接已准备好的,可重复使用的,获取后可以直接使用访问数据库,因此减少了连接创建的次数和时间。

2,简化编程模式。当使用连接池时,每一个单独的线程能够创建一个自己的JDBC连接一样操作,允许用户直接使用JDBC编程技术。

3,控制资源的使用。如果不使用连接池,每次访问访问数据库都需要创建一个连接,这样系统的稳定性受系统连接需求影响很大,很容易产生资源浪费和高负载异常。连接池能够使用性能最大化,将资源利用控制在一定的水平之下。连接池能控制池中的连接数量,增强了新系统在大量用户应用时的稳定性

参考链接:

https://www.zhihu.com/question/45993333

https://www.imooc.com/wenda/detail/330313

https://blog.****.net/qq_32344765/article/details/106018148