【JavaEE进阶】数据库连接池

devtools/2025/2/25 4:23:15/

目录

🌴数据库连接池

🎋数据库连接池的使用

🌲MySQL企业开发规范


🌴数据库连接池

数据库连接池负责分配、管理和释放数据库连接,它允许应⽤程序重复使⽤⼀个现有的数据库连接,⽽不是再重新建⽴⼀个.

没有使用数据库连接池的情况:每次执⾏SQL语句,要先创建⼀个新的连接对象,然后执⾏SQL语句,SQL语句执⾏完,再关闭连接对象释放资源.这种重复的创建连接,销毁连接⽐较消耗资源

使⽤数据库连接池的情况:程序启动时,会在数据库连接池中创建⼀定数量的Connection对象,当客⼾请求数据库连接池,会从数据库连接池中获取Connection对象,然后执⾏SQL,SQL语句执⾏完,再把Connection归还给连接池.

数据库连接池优点:

  1. 减少了⽹络开销
  2. 资源重⽤
  3. 提升了系统的性能

🎋数据库连接池的使用

常⻅的数据库连接池:

  • C3P0
  • DBCP
  • Druid
  • Hikari

⽬前⽐较流⾏的是Hikari,Druid

  • 1. Hikari : SpringBoot默认使⽤的数据库连接池

Hikari 是⽇语"光"的意思(ひかり),Hikari也是以追求性能极致为⽬标

  • 2. Druid

如果我们想把默认的数据库连接池切换为Druid数据库连接池,只需要引⼊相关依赖即可

如果SpringBoot版本为2.X,使⽤druid-spring-boot-starter依赖

运行结果:

参考官⽅地址:druid/druid-spring-boot-starter at master · alibaba/druid · GitHub

  • Druid连接池是阿⾥巴巴开源的数据库连接池项⽬
  • 功能强⼤,性能优秀,是Java语⾔最好的数据库连接池之⼀

学习⽂档:首页 · alibaba/druid Wiki · GitHub

🌲MySQL企业开发规范

1. 表名,字段名使⽤⼩写字⺟或数字,单词之间以下划线分割.尽量避免出现数字开头或者两个下划线 中间只出现数字.数据库字段名的修改代价很⼤,所以字段名称需要慎重考虑。

MySQL在Windows下不区分⼤⼩写,但在Linux下默认是区分⼤⼩写.因此, 数据库名,表名,字 段名都不允许出现任何⼤写字⺟,避免节外⽣枝

正例:aliyun_admin,rdc_config,level3_name

反例:AliyunAdmin,rdcConfig,level_3_name

2. 表必备三字段:id,create_time,update_time

id 必为主键, 类型为bigintunsigned, 单表时⾃增, 步⻓为1

create_time, update_time 的类型均为datetime类型,create_time表⽰创建时间,update_time表⽰更新时间

有同等含义的字段即可,字段名不做强制要求

3. 在表查询中, 避免使⽤*作为查询的字段列表,标明需要哪些字段(文章中上演⽰的除外).

  • 1. 增加查询分析器解析成本
  • 2. 增减字段容易与resultMap配置不⼀致
  • 3. ⽆⽤字段增加⽹络消耗,尤其是text类型的字段

http://www.ppmy.cn/devtools/161492.html

相关文章

1.1 go环境搭建及基本使用

golang下载地址: Download and install - The Go Programming Language (google.cn) 验证安装是否成功: go version 查看go环境 go env 注意:Go1.11版本之后无需手动配置环境变量,使用go mod 管理项目,也不需要把项目放到GO…

Baklib智能平台:数据驱动下的企业知识安全与协作

内容概要 在数字化转型加速渗透的今天,企业知识资产的智能化管理与安全防护已成为核心竞争力构建的关键环节。Baklib作为新一代知识中台(Knowledge Hub)的典型代表,以数据驱动技术为核心引擎,重构了企业知识管理的底层…

三元运算符(Ternary Operator):简洁而强大的条件表达式

在编程中,条件判断是不可或缺的一部分。我们经常需要根据某些条件来决定程序的执行路径。虽然 if-else 语句是最常见的条件判断方式,但在某些情况下,使用三元运算符(Ternary Operator)可以让代码更加简洁和易读。本文将…

改BUG:Mock测试服务层的时候,应注入服务类的实现,而不是接口。

bug再现 在使用mock测试时,像这样注入一个服务类 InjectMocks private IUserRegisterService userRegisterService;然后再进行测试就会报这个错 Cannot instantiate InjectMocks field named userRegisterService! Cause: the type IUserRegisterService is an i…

前后端项目部署服务器(传统部署和Docker部署)

内外网 开发环境连外网(8.140.26.187),测试/生产环境连内网(172.20.59.17) 内外网地址不同,但指定的库是同一个 内网IP地址范围包括: 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…

实验-安装Proteus

Ver V0.0 250222:安装Proteus8.17SP4 说明 (1)如果有找到Proteus8.17最后版本SP5,再更新了; (2)8.17是8X最后一个大版本,后面是Proteus9。 内容 下载: 链接:https…

【Linux】动静态库

目录 站在库提供者的角度 静态库 制作静态库 静态库的内容 发布静态库 用户使用静态库 找头文件 找库文件 动态库 制作动态库 动态库报错 动态库是怎么被加载的? 地址相关问题 程序加载前的地址 程序加载后的地址 如何执行第一条指令? …

认知重构 | 自我分化 | 苏格拉底式提问

注:本文为 “认知重构 | 自我分化” 相关文章合辑。 心理学上有一个词叫:认知重构(改变 “非黑即白,一分为二” 的思维方式) 原创 心理师威叔 心理自救 2024 年 10 月 26 日 19:08 广东 你有没有过这样的时候&#x…