JDBC数据库连接池:Druid与Hikari

目录

Druid(德鲁伊)

Druid使用

1.引入依赖

2.配置Druid连接池(软/硬代码配置)

硬代码配置

软代码配置(配置文件配置)

Hikari(ひかり)

Hikari使用

1.引用依赖:

2.配置 HikariCP 连接池(软/硬代码配置)

硬代码配置

软代码配置(配置文件配置)


Druid(德鲁伊)

Druid是阿里提供的数据看连接池,在现在主流连接池当中性能、扩展性、易用性相对更好。它不仅提供了数据库连接池的基本功能,还支持 SQL 监控、慢查询监控、日志记录等高级特性。

Druid使用

1.引入依赖

直接在lib中引入对应.jar包或

在 Maven 项目中,需要在 pom.xml 文件中添加 Druid 的依赖。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.16</version>
</dependency>

在Gradle中 build.gradle 中添加

implementation 'com.alibaba:druid:1.2.16'
2.配置Druid连接池(软/硬代码配置)
硬代码配置
import com.alibaba.druid.pool.DruidDataSource;

public class DruidDataSourceExample {
    public static void main(String[] args) {
        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");

        // 配置连接池大小
        dataSource.setInitialSize(5);
        dataSource.setMaxActive(10);
        dataSource.setMinIdle(5);
        
        // 配置获取连接等待超时的时间
        dataSource.setMaxWait(60000);
        

        // 使用数据源获取连接
        try (Connection conn = dataSource.getConnection()) {
            System.out.println("Connection Successful!");
            // 执行数据库操作
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭数据源
            dataSource.close();
        }
    }
}
软代码配置(配置文件配置)

先在druid.properties 文件配置连接池参数,然后在代码中加载这个配置文件。

druid.properties 文件配置示例如下:

druid.url=jdbc:mysql://localhost:3306/your_database
druid.username=your_username
druid.password=your_password
druid.driverClassName=com.mysql.cj.jdbc.Driver

druid.initialSize=5
druid.maxActive=10
druid.minIdle=5
druid.maxWait=60000

druid.filters=stat,wall,log4j

代码加载配置文件如下:

@Test
    public void testResourcesDruid() throws Exception {
        //1.创建Properties集合,用于存储外部配置文件的key和value值。
        Properties properties = new Properties();

         //1.创建Properties集合,用于存储外部配置文件的key和value值。
        InputStream inputStream = DruidTest.class.getClassLoader().getResourceAsStream("druid.properties");
        properties.load(inputStream);

        //1.创建Properties集合,用于存储外部配置文件的key和value值。
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

        //4.通过连接池获取连接对象
        Connection connection = dataSource.getConnection();
        System.out.println(connection);

        //5.开发CRUD

        //6.回收连接
        connection.close();
    }

配置属性说明:

·url:数据库的 JDBC 连接 URL。

·username:连接数据库的用户名。

·password:连接数据库的密码。

·driverClassName:JDBC 驱动类的全限定名。

·initialSize:初始化时创建的连接数(默认值:0)。

·maxActive:连接池中最大活动连接数(默认值:8)。通常也称为最大连接数。

·minIdle:连接池中保持的最小空闲连接数(默认值:与initialSize相同)。

·maxWait:获取连接的最大等待时间(毫秒,默认值:无限制)。超过时间则抛出异常。

Hikari(ひかり)

Hikari取自日语“光”,广泛应用于java应用程序当中,是SpringBoot2.x之后内置的一款连接池,以轻量级、高效率、低延迟而著称,是目前性能最好的数据库连接池之一。

Hikari使用

1.引用依赖:

直接在lib中引入对应.jar包或

在 Maven 项目中,需要在 pom.xml 文件中添加 HikariCP 的依赖。

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

如果使用的是 Gradle,则在 build.gradle 中添加:

implementation 'com.zaxxer:HikariCP:5.0.1'
2.配置 HikariCP 连接池(软/硬代码配置)
硬代码配置
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class HikariCPExample {
    public static void main(String[] args) {
        // 1. 配置 HikariCP
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
        config.setUsername("your_username");
        config.setPassword("your_password");
        config.setDriverClassName("com.mysql.cj.jdbc.Driver");

        // 2. 配置连接池属性
        config.setMaximumPoolSize(10);
        config.setMinimumIdle(5);
        config.setConnectionTimeout(30000);
        config.setIdleTimeout(600000);
        config.setMaxLifetime(1800000);

        // 3. 创建数据源
        HikariDataSource dataSource = new HikariDataSource(config);

        // 4. 使用数据源获取连接
        try (Connection conn = dataSource.getConnection()) {
            System.out.println("Connection Successful!");
            // 执行数据库操作
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭数据源
            dataSource.close();
        }
    }
}
软代码配置(配置文件配置)

先通过 hikari.properties 文件进行配置,然后在代码中加载这个配置文件。

hikari.properties 文件示例如下:

dataSourceClassName=com.mysql.cj.jdbc.MysqlDataSource
dataSource.url=jdbc:mysql://localhost:3306/your_database
dataSource.user=your_username
dataSource.password=your_password

maximumPoolSize=10
minimumIdle=5
connectionTimeout=30000
idleTimeout=600000
maxLifetime=1800000

代码加载配置文件如下:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class HikariCPExample {
    public static void main(String[] args) {
        // 1. 加载配置文件
        HikariConfig config = new HikariConfig("/path/to/hikari.properties");

        // 2. 创建数据源
        HikariDataSource dataSource = new HikariDataSource(config);

        // 3. 使用数据源获取连接
        try (Connection conn = dataSource.getConnection()) {
            System.out.println("Connection Successful!");
            // 执行数据库操作
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 4. 关闭数据源
            dataSource.close();
        }
    }
}

配置属性说明:

  • JdbcUrl:数据库连接 URL。
  • UsernamePassword:数据库用户名和密码。
  • DriverClassName:JDBC 驱动的类名。
  • MaximumPoolSize:连接池中允许的最大连接数。
  • MinimumIdle:连接池中保持空闲的最小连接数。
  • ConnectionTimeout:获取连接的最大等待时间(毫秒)。
  • IdleTimeout:连接在空闲状态下被保留的最大时间(毫秒),超过此时间则会被释放。
  • MaxLifetime:连接在池中最长的生命周期(毫秒),超过此时间的连接将被回收。
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值