一、先搞懂:数据库连接池是什么?
简单说,数据库连接池就是一个“连接仓库”——提前创建好一批和数据库的连接,应用程序需要访问数据库时,直接从仓库里拿现成的连接,用完后再还回去,不用每次都重新创建和销毁连接。
举个例子:就像去餐厅吃饭,连接池相当于“提前备好的餐桌”,你到了直接坐(拿连接),吃完走了餐桌留给别人用(还连接);如果没有连接池,就像每次来都要先搭桌子、吃完再拆桌子,又麻烦又费时间。
1.1 为什么必须用连接池?
-
快:不用重复创建连接,访问数据库的响应速度会大幅提升;
-
稳:能限制最大并发连接数,避免太多请求同时连数据库导致数据库崩溃;
-
省事儿:自动处理“空闲连接回收”“失效连接重连”,不用手动维护。
二、选哪个?4种主流连接池对比
Java 里常用的连接池有4种,按“推荐优先级”排序,根据自己的项目场景选:
|
连接池类型
|
优点
|
适合什么项目
|
|
HikariCP
|
速度最快、配置最简单,Spring Boot 2.x 以上默认自带
|
Spring Boot 项目、高并发微服务(优先选)
|
|
Druid
|
有可视化监控页面,能防SQL注入,企业级功能全
|
需要监控、审计的企业级应用
|
|
Tomcat JDBC Pool
|
和 Tomcat 服务器深度整合,不用额外加依赖
|
传统 Java Web 项目(WAR包部署到 Tomcat)
|
|
C3P0
|
兼容性极强,老项目都能用
|
老项目维护(新项目不推荐)
|
一句话总结:新项目优先用 HikariCP;需要监控用 Druid;Tomcat 部署用 Tomcat JDBC Pool;老项目别动 C3P0。
三、怎么配?4种连接池配置步骤(直接抄)
所有配置都以“连接 MySQL 数据库”为例,把里面的
url、username、password 改成自己的数据库信息即可。3.1 HikariCP 配置(Spring Boot 默认,推荐)
不用额外加依赖,直接在
application.yml 里写配置:spring:
datasource:
# 你的数据库信息
url: jdbc:mysql://127.0.0.1:3306/你的数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: 你的数据库用户名(如root)
password: 你的数据库密码(如123456)
driver-class-name: com.mysql.cj.jdbc.Driver
# HikariCP 核心配置(直接抄,不用改)
hikari:
maximum-pool-size: 20 # 最大连接数(8核CPU够用)
minimum-idle: 20 # 最小空闲连接数(和最大连接数一致,响应快)
idle-timeout: 600000 # 空闲10分钟的连接回收
connection-timeout: 30000 # 拿连接最多等30秒,超时提示系统忙
max-lifetime: 1800000 # 连接用30分钟就换新的,避免失效
3.2 Druid 配置(需要监控选这个)
分两步:先加依赖,再写配置
第一步:加 Maven 依赖(复制到 pom.xml)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
第二步:写配置(application.yml)
spring:
datasource:
# 你的数据库信息
url: jdbc:mysql://127.0.0.1:3306/你的数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: 你的数据库用户名
password: 你的数据库密码
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource # 指定用Druid
# Druid 核心配置
druid:
initial-size: 5 # 启动时创建5个连接
max-active: 20 # 最大连接数20
min-idle: 5 # 空闲时保留5个连接
max-wait: 60000 # 拿连接最多等60秒
# 监控配置(关键!配置完能看监控页面)
stat-view-servlet:
enabled: true
url-pattern: /druid/* # 监控页面地址:http://localhost:8080/druid
login-username: admin # 监控页面登录用户名
login-password: 123456 # 监控页面登录密码
配置完启动项目,访问
http://localhost:8080/druid,输入用户名密码就能看到监控数据。3.3 Tomcat JDBC Pool 配置(部署到 Tomcat 用)
不用加依赖,直接在 Tomcat 的
context.xml 里写配置(context.xml 位置:Tomcat/conf/ 或 项目/META-INF/)<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jdbc/TestDB" # 自定义名称,后面用这个名拿连接
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/你的数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai"
username="你的数据库用户名"
password="你的数据库密码"
maxTotal="20" # 最大连接数20
maxIdle="5" # 最大空闲连接数5
minIdle="2" # 最小空闲连接数2
maxWaitMillis="30000" # 拿连接最多等30秒
/>
</Context>
项目中拿连接的代码:
// 通过上面配置的 "jdbc/TestDB" 名称获取连接
Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/TestDB");
Connection connection = dataSource.getConnection();
3.4 C3P0 配置(老项目维护用)
第一步:加 Maven 依赖
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.5</version>
</dependency>
第二步:写配置(src/main/resources/c3p0-config.xml)
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/你的数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai</property>
<property name="user">你的数据库用户名</property>
<property name="password">你的数据库密码</property>
<property name="maxPoolSize">20</property> # 最大连接数20
<property name="minPoolSize">5</property> # 最小空闲连接数5
<property name="maxIdleTime">600</property> # 空闲10分钟回收连接
</default-config>
</c3p0-config>
项目中拿连接的代码:
// 直接创建数据源,自动加载上面的配置
ComboPooledDataSource dataSource = new ComboPooledDataSource();
Connection connection = dataSource.getConnection();
四、新手避坑:3个关键注意事项
-
数据库信息别写错:
url里的 “数据库名”、端口号(默认3306),还有用户名密码,错一个就连接失败; -
驱动类名区分版本:MySQL 8.x 用
com.mysql.cj.jdbc.Driver,MySQL 5.x 用com.mysql.jdbc.Driver; -
别忘关连接:用完连接一定要在
finally块里关闭(用 MyBatis、JPA 框架会自动关,手动写代码要注意)。
五、总结
1. 新项目优先用 HikariCP,配置简单、速度快;2. 需要监控用 Druid,能看数据还能防注入;3. 传统 Tomcat 项目用 Tomcat JDBC Pool;4. 老项目别动 C3P0;5. 配置时改好自己的数据库信息,别踩驱动类名和连接关闭的坑。
此文章仅供学习 请在下载24小时内删除。
© 版权声明
声明
小扎博客用须知
- 1本网站内容仅供个人学习、研究和欣赏,未经授权禁止用于任何商业用途。
- 2网站中的代码示例仅用于教育目的,使用时请遵循相关开源协议和授权规定。
- 3转载或引用本站内容请注明出处,尊重原创,共同维护良好的创作环境。
- 4网站评论区欢迎理性讨论,请勿发表违反法律法规的言论,共建和谐社区。
- 5如有内容侵犯您的权益,请通过博客联系方式告知,将立即核实并处理。
- 6使用本站资源时产生的任何问题与后果需自行承担,请谨慎操作。
THE END

















也~一个评论的都没有