1. 数据库连接池

1.1 连接池介绍

1.1.1 什么是连接池

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

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

1.1.2 连接池的好处

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

1.2 JDBC方式与连接池方式

普通 JDBC方式

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

连接池方式

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

1.3 如何使用数据库连接池

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

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

1.4 数据准备

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

1.5 DBCP连接池

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

1.5.1 创建项目导入jar包

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

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

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

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

1.5.2 编写工具类

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

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

  • 代码示例

一文带你了解数据库连接池_数据库连接池_06一文带你了解数据库连接池_后端_07

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会自动导入

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

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

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

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

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

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

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

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

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

1.6.2 编写C3P0工具类

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

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

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

1.6.3 常见配置

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

1.7 Druid连接池

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

1.7.1 导入jar包及配置文件

  1. 导入 jar包

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

  • 是properties形式的
  • 可以叫任意名称,可以放在任意目录下,我们统一放到 resources资源目录

一文带你了解数据库连接池_后端_17

一文带你了解数据库连接池_后端_18

1.7.2 编写Druid工具类

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

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

一文带你了解数据库连接池_后端_19

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