Java 数据库连接池DBPool 介绍

 更新时间:2021年11月23日 10:59:42   作者:咏吟  
这篇文章主要给大家分享了Java 数据库连接池DBPool 介绍,<BR>DBPool是一个高效的易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池使你能够开发一个满足自已需求的数据库连接池,下面一起来看看文章内容的详细介绍吧,需要的朋友可以参考一下

前言:

DBPool 是一个高效易配置的数据库连接池,支持 JDBC 4.2,但目前已经不维护了;本文简单介绍下 DBPool 的使用,文中使用到的软件版本:Java 1.8.0_191、DBPool 7.0.1、Spring Boot 2.3.12.RELEASE。

1、配置参数

参数 描述
name 连接池名称
description 描述
driverClassName 驱动名称
url 连接 url
user 用户名
password 密码
passwordDecoderClassName 密码解密类名,需实现 snaq.db.PasswordDecoder 接口,需要有无参构造方法
minPool 连接池最小连接数
maxPool 连接池最大连接数
maxSize 可以创建的最大连接数
idleTimeout 空闲连接数最大存活时间(秒),0 表示无限制
loginTimeout 创建连接的超时时间(秒)
validatorClassName 校验类名,需实现 snaq.db.ConnectionValidator 接口,需要有无参构造方法
validatorQuery 校验查询语句

详细说明可参考官网文档:https://www.snaq.net/software/dbpool/

2、使用

2.1、直接使用

2.1.1、引入依赖

<dependency>

    <groupId>net.snaq</groupId>

    <artifactId>dbpool</artifactId>

    <version>7.0.1</version>

</dependency>

2.1.2、使用例子

package com.abc.demo.general.dbpool;

import snaq.db.DBPoolDataSource;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DBPoolCase {

    public static void main(String[] args) {

        DBPoolDataSource dbPoolDataSource = new DBPoolDataSource();

        dbPoolDataSource.setName("DBPool连接池");

        dbPoolDataSource.setDescription("DBPool连接池测试");

        dbPoolDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

        dbPoolDataSource.setUrl("jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8");

        dbPoolDataSource.setUser("root");

        dbPoolDataSource.setPassword("123456");

        dbPoolDataSource.setMinPool(5);

        dbPoolDataSource.setMaxPool(10);

        dbPoolDataSource.setMaxSize(30);

        dbPoolDataSource.setIdleTimeout(3600);

        dbPoolDataSource.setLoginTimeout(60);

        dbPoolDataSource.setValidationQuery("select 1");



        Connection connection = null;

        try {

            connection = dbPoolDataSource.getConnection();

            Statement st = connection.createStatement();

            ResultSet rs = st.executeQuery("select version()");

            if (rs.next()) {

                System.out.println(rs.getString(1));

            }

        } catch (SQLException e) {

            e.printStackTrace();

        } finally {

            close(connection);

        }

        //实际使用中一般是在应用启动时初始化数据源,应用从数据源中获取连接;并不会关闭数据源。

        dbPoolDataSource.release();

    }

    private static void close(Connection connection) {

        if (connection != null) {

            try {

                connection.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

        }

    }

}

2.2、在 SpringBoot 中使用

2.1.1、引入依赖

<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>2.3.12.RELEASE</version>

    <relativePath />

</parent>

<dependencies>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-jdbc</artifactId>

    </dependency>

    <dependency>

        <groupId>net.snaq</groupId>

        <artifactId>dbpool</artifactId>

        <version>7.0.1</version>

    </dependency>

    <dependency>

        <groupId>mysql</groupId>

        <artifactId>mysql-connector-java</artifactId>

    </dependency>

</dependencies>

2.1.2、单数据源

application.yml 配置:

spring:

  datasource:

    dbpool:

      name: DBPool连接池

      description: DBPool连接池测试

      driver-class-name: com.mysql.cj.jdbc.Driver

      url: jdbc:mysql://10.40.9.11:3306/myDb?useUnicode=true&characterEncoding=UTF-8

      user: root

      password: 123456

      min-pool: 5

      max-pool: 10

      max-size: 30

      idle-timeout: 3600

      login-timeout: 60

      validator-query: select 1

数据源配置类:

package com.abc.demo.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.boot.jdbc.DataSourceBuilder;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import snaq.db.DBPoolDataSource;

import javax.sql.DataSource;

@Configuration

public class DataSourceConfig {

    @Bean("dataSource")

    @ConfigurationProperties(prefix = "spring.datasource.dbpool")

    public DataSource dataSource() {

        return DataSourceBuilder.create().type(DBPoolDataSource.class).build();

    }

}

使用:

@Autowired

private DataSource dataSource;

2.1.3、多数据源

application.yml 配置:

spring:

  datasource:

    dbpool:

      db1:

        name: DBPool连接池1

        description: DBPool连接池测试1

        driver-class-name: com.mysql.cj.jdbc.Driver

        url: jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8

        user: root

        password: 123456

        min-pool: 5

        max-pool: 10

        max-size: 30

        idle-timeout: 3600

        login-timeout: 60

        validator-query: select 1

      db2:

        name: DBPool连接池2

        description: DBPool连接池测试2

        driver-class-name: com.mysql.cj.jdbc.Driver

        url: jdbc:mysql://10.40.9.12:3306/mydb?useUnicode=true&characterEncoding=UTF-8

        user: root

        password: 123456

        min-pool: 5

        max-pool: 10

        max-size: 30

        idle-timeout: 3600

        login-timeout: 60

        validator-query: select 1

数据源配置类:

package com.abc.demo.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.boot.jdbc.DataSourceBuilder;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import snaq.db.DBPoolDataSource;

import javax.sql.DataSource;

@Configuration

public class DataSourceConfig {

    @Bean("dataSource1")

    @ConfigurationProperties(prefix = "spring.datasource.dbpool.db1")

    public DataSource dataSource1() {

        return DataSourceBuilder.create().type(DBPoolDataSource.class).build();

    }

    @Bean("dataSource2")

    @ConfigurationProperties(prefix = "spring.datasource.dbpool.db2")

    public DataSource dataSource2() {

        return DataSourceBuilder.create().type(DBPoolDataSource.class).build();

    }

}

使用:

@Autowired

@Qualifier("dataSource1")

private DataSource dataSource1;

@Autowired

@Qualifier("dataSource2")

private DataSource dataSource2;

 

到此这篇关于 Java 数据库连接池DBPool 介绍的文章就介绍到这了,更多相关 Java 连接池DBPool 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java基础理论Stream管道流Map操作示例

    java基础理论Stream管道流Map操作示例

    这篇文章主要未大家介绍了java基础理论Stream管道流Map操作方法示例解析,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java 静态数据初始化的示例代码

    Java 静态数据初始化的示例代码

    这篇文章主要介绍了Java 静态数据初始化的示例代码,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • springboot之如何获取项目目录路径

    springboot之如何获取项目目录路径

    这篇文章主要介绍了springboot之如何获取项目目录路径问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • java 中sleep() 和 wait() 的对比

    java 中sleep() 和 wait() 的对比

    这篇文章主要介绍了java 中sleep() 和 wait() 的对比的相关资料,需要的朋友可以参考下
    2017-04-04
  • Java求出任意数字的各个位数之和方式

    Java求出任意数字的各个位数之和方式

    这篇文章主要介绍了Java求出任意数字的各个位数之和方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • MyBatis结果映射(ResultMap)的使用

    MyBatis结果映射(ResultMap)的使用

    在MyBatis中,结果映射是实现数据库结果集到Java对象映射的核心,它不仅支持简单的字段映射,还能处理字段名不一致、嵌套对象和集合映射等复杂场景,通过ResultMap,开发者可以灵活定义映射关系,以适应各种需求,感兴趣的可以了解一下
    2024-09-09
  • ExecutorService实现获取线程返回值

    ExecutorService实现获取线程返回值

    这篇文章主要介绍了ExecutorService实现获取线程返回值,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java 多线程实例讲解(一)

    Java 多线程实例讲解(一)

    本文主要介绍Java 多线程的知识,这里整理了详细的资料及简单示例代码有需要的小伙伴可以参考下
    2016-09-09
  • Java实现为图片添加水印功能

    Java实现为图片添加水印功能

    在图像处理领域,水印是一种常见的保护版权和标识图片归属的方法,Java提供了强大的图像处理能力,可以通过Graphics2D类在图像上绘制水印,下面我们来看看具体操作步骤吧
    2025-02-02
  • SpringSecurity实现访问控制url匹配

    SpringSecurity实现访问控制url匹配

    本文主要介绍了SpringSecurity实现访问控制url匹配,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论