一文带你了解数据库连接池

这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战

1. 数据库连接池

1.1 连接池介绍

1.1.1 什么是连接池

  • 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。

  • 这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池.

1.1.2 连接池的好处

  • 用池来管理Connection,这样可以重复使用Connection。 当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。

1.2 JDBC方式与连接池方式

普通 JDBC方式

image.png

连接池方式

image.png

1.3 如何使用数据库连接池

  • Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。 这样应用程序可以方便的切换不同厂商的连接池!

  • 常见的连接池有 DBCP连接池, C3P0连接池, Druid连接池。

1.4 数据准备

image.png

1.5 DBCP连接池

  • DBCP也是一个开源的连接池,是Apache成员之一,在企业开发中也比较常见,tomcat内置的连接池。

1.5.1 创建项目导入jar包

  • 1)将这两个 jar包添加到 myJar文件夹中 (jar包在资料里的软件文件夹中)

image.png

  • 2)添加myJar库 到项目的依赖中

image.png

1.5.2 编写工具类

  • 连接数据库表的工具类, 采用DBCP连接池的方式来完成
    • Java中提供了一个连接池的规则接口 :DataSource, 它是java中提供的连接池

    • 在DBCP包中提供了DataSource接口的实现类,我们要用的具体的连接池类

  • 代码示例

image.png image.png

1.5.3 常见配置项

属性 描述
driverClassName 数据库驱动名称
url 数据库地址
username 用户名
password 密码
maxActive 最大连接数量
maxIdle 最大空闲连接
minIdle 最小空闲连接
initialSize 初始化连接

1.6 C3P0连接池

  • C3P0是一个开源的JDBC连接池,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate、Spring等。

1.6.1 导入jar包及配置文件

    1. 将jar包 复制到myJar文件夹即可,IDEA会自动导入

image.png

    1. 导入配置文件 c3p0-config.xml
    • c3p0-config.xml 文件名不可更改
    • 直接放到src下,也可以放到到资源文件夹中

image.png

    1. 在项目下创建一个resource文件夹(专门存放资源文件)

image.png

    1. 选择文件夹,右键 将resource文件夹指定为资源文件夹

image.png

    1. 将文件放在resource目录下即可,创建连接池对象的时候会去加载这个配置文件

image.png

1.6.2 编写C3P0工具类

  • C3P0提供的核心工具类,ComboPooledDataSource, 如果想使用连接池,就必须创建该类的对象

    • new ComboPooledDataSource(); 使用 默认配置
    • new ComboPooledDataSource("mysql"); 使用命名配置

image.png image.png

1.6.3 常见配置

image.png

1.7 Druid连接池

  • Druid(德鲁伊)是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。

1.7.1 导入jar包及配置文件

    1. 导入 jar包

image.png

    1. 导入配置文件
    • 是properties形式的
    • 可以叫任意名称,可以放在任意目录下,我们统一放到 resources资源目录

image.png

image.png

1.7.2 编写Druid工具类

  • 获取数据库连接池对象
    • 通过工厂来来获取 DruidDataSourceFactory类的createDataSource方法

    • createDataSource(Properties p) 方法参数可以是一个属性集对象

image.png

image.png

猜你喜欢

转载自juejin.im/post/7032089873972461582