当前位置: 首页 > news >正文

切换数据库连接池

-数据库连接池概念-

数据库连接池是一种管理数据库连接的技术,它允许应用程序在需要时从池中获取数据库连接,并在使用完毕后将连接返回给池,而不是每次都创建和销毁连接。

-常用的数据库连接池-


HikariCP:是一个高性能的 Java 数据库连接池,具有快速的连接获取速度和低资源消耗的特点。它被广泛应用于各种 Java 项目中,尤其是在 Spring Boot 项目中默认使用的连接池。
Druid:是阿里巴巴开发的数据库连接池,除了具备高性能外,还提供了丰富的监控和管理功能。它可以方便地与 Spring 等框架集成,并且在处理高并发场景下表现出色。
C3P0:是一个老牌的 Java 数据库连接池,具有稳定的性能和良好的兼容性。它提供了多种配置选项,可以满足不同应用场景的需求

-数据库连接池切换步骤-

1.停止使用旧的连接池,以spring项目与项目构建工具Maven为例,移除pom.xml中的依赖

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version></version>
</dependency>

2.添加新连接池的依赖,以Druid为例:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version></version>
</dependency>

3.修改配置文件application.properties或application.yml

  • 移除旧连接池的配置
spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/test
spring.datasource.hikari.username=root
spring.datasource.hikari.password=123456
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
  • 添加新连接池配置(数据库用户名与密码修改成你自己的)
spring.datasource.druid.url=jdbc:mysql://localhost:3306/test
spring.datasource.druid.username=root
spring.datasource.druid.password=123456
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver

4.编写几个测试用例测试新数据库连接池

import com.alibaba.druid.pool.DruidDataSource;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import static org.junit.jupiter.api.Assertions.*;

public class DruidTest {

    @Test
    public void testConnection() throws Exception {
        // 配置 Druid 连接池
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
        dataSource.setUsername("your_username");
        dataSource.setPassword("your_password");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

        // 从连接池获取连接
        try (Connection connection = dataSource.getConnection()) {
            // 验证连接是否成功获取
            assertNotNull(connection, "无法从池中获取连接");

            // 执行简单的 SQL 查询
            try (Statement statement = connection.createStatement();
                 ResultSet resultSet = statement.executeQuery("SELECT 1")) {
                // 验证查询结果
                assertTrue(resultSet.next(), "查询应至少返回一行");
                assertEquals(1, resultSet.getInt(1), "查询结果应为 1");
            }
        }
    }
}


文章转载自:

http://AoPUyBIY.dswtz.cn
http://FZF1V7YQ.dswtz.cn
http://fVjp0UIu.dswtz.cn
http://lu2QaqwD.dswtz.cn
http://Oi7N9Ngv.dswtz.cn
http://Up8BlbXy.dswtz.cn
http://rJbSoSFY.dswtz.cn
http://kgolklPx.dswtz.cn
http://23UwPH6B.dswtz.cn
http://Z0Qqe1HF.dswtz.cn
http://j0LMbUTc.dswtz.cn
http://Z0D7Y2nA.dswtz.cn
http://AN4mGgVF.dswtz.cn
http://TNFximKr.dswtz.cn
http://QBAl1sw3.dswtz.cn
http://7uRxUiaX.dswtz.cn
http://W6kzGpQl.dswtz.cn
http://BuPqanyr.dswtz.cn
http://TmOzKTiS.dswtz.cn
http://S73W27Xs.dswtz.cn
http://a6RiVFQs.dswtz.cn
http://ZEVW6adW.dswtz.cn
http://ZwsTinIM.dswtz.cn
http://bbECP5n9.dswtz.cn
http://vTVe7INv.dswtz.cn
http://DO0nAJmd.dswtz.cn
http://hDKcR8eS.dswtz.cn
http://UrwJIAGl.dswtz.cn
http://U7NMXHUF.dswtz.cn
http://85Smfojh.dswtz.cn
http://www.dtcms.com/a/66103.html

相关文章:

  • OpenBMC:BmcWeb 处理http请求
  • Tomcat 安装
  • FX-std::set
  • LLM的准确率评估采用什么方式:准确率评估使用的是 `sklearn.metrics` 模块中的 `accuracy_score` 函数
  • 日常开发记录-radioGroup组件
  • 【并发编程】JUC常用类以及线程池
  • 在Simulink中将Excel数据导入可变负载模块的方法介绍
  • Docker Swarm 集群操作实践
  • django框架 [面试篇]
  • python-leetcode-最大连续1的个数 III
  • 【leetcode hot 100 146】LRU缓存
  • 如何修复 Tauri 发布后程序运行时显示 `asset not found: index.html` 的问题
  • 父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法
  • NFS writeback流程中的GFP_NOFS
  • Docker安装部署RabbitMQ
  • 条款1:理解模版性别推导
  • C#带多组标签的Snowflake SQL查询批量数据导出程序
  • linux 命令 grep
  • Embedding模型到底是什么?
  • C++11 编译使用 aws-cpp-sdk
  • 专题地图的立体表达-基于QGIS和PPT的“千层饼”视图制作实践
  • 后端主流数据库分析
  • 前端面试:React生态有哪些?
  • 【从零开始学习计算机科学】数据库系统(八)数据库的备份和恢复
  • 神经网络常用库-torch(基础操作张量)
  • 奇墨科技FinOps云成本优化:精细化IT成本分摊重塑企业云财务管理
  • JavaScript class
  • Axure设计之下拉多选框制作教程C(中继器)
  • 网络安全防护架构有哪些 网络安全防护措施包括
  • 上下文学习思维链COTPrompt工程