Java?數(shù)據(jù)庫(kù)連接池DBPool?介紹
前言:
DBPool 是一個(gè)高效易配置的數(shù)據(jù)庫(kù)連接池,支持 JDBC 4.2,但目前已經(jīng)不維護(hù)了;本文簡(jiǎn)單介紹下 DBPool 的使用,文中使用到的軟件版本:Java 1.8.0_191、DBPool 7.0.1、Spring Boot 2.3.12.RELEASE。
1、配置參數(shù)
| 參數(shù) | 描述 |
| name | 連接池名稱 |
| description | 描述 |
| driverClassName | 驅(qū)動(dòng)名稱 |
| url | 連接 url |
| user | 用戶名 |
| password | 密碼 |
| passwordDecoderClassName | 密碼解密類名,需實(shí)現(xiàn)?snaq.db.PasswordDecoder 接口,需要有無(wú)參構(gòu)造方法 |
| minPool | 連接池最小連接數(shù) |
| maxPool | 連接池最大連接數(shù) |
| maxSize | 可以創(chuàng)建的最大連接數(shù) |
| idleTimeout | 空閑連接數(shù)最大存活時(shí)間(秒),0 表示無(wú)限制 |
| loginTimeout | 創(chuàng)建連接的超時(shí)時(shí)間(秒) |
| validatorClassName | 校驗(yàn)類名,需實(shí)現(xiàn) snaq.db.ConnectionValidator 接口,需要有無(wú)參構(gòu)造方法 |
| validatorQuery | 校驗(yàn)查詢語(yǔ)句 |
詳細(xì)說(shuō)明可參考官網(wǎng)文檔: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連接池測(cè)試");
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);
}
//實(shí)際使用中一般是在應(yīng)用啟動(dòng)時(shí)初始化數(shù)據(jù)源,應(yīng)用從數(shù)據(jù)源中獲取連接;并不會(huì)關(guān)閉數(shù)據(jù)源。
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、單數(shù)據(jù)源
application.yml 配置:
spring:
datasource:
dbpool:
name: DBPool連接池
description: DBPool連接池測(cè)試
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
數(shù)據(jù)源配置類:
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、多數(shù)據(jù)源
application.yml 配置:
spring:
datasource:
dbpool:
db1:
name: DBPool連接池1
description: DBPool連接池測(cè)試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連接池測(cè)試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
數(shù)據(jù)源配置類:
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;
到此這篇關(guān)于 Java 數(shù)據(jù)庫(kù)連接池DBPool 介紹的文章就介紹到這了,更多相關(guān) Java 連接池DBPool 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java 后端開(kāi)發(fā)中Tomcat服務(wù)器運(yùn)行不了的五種解決方案
- Java tomcat中的類加載器和安全機(jī)制你了解嗎
- Eclipse開(kāi)發(fā)JavaWeb項(xiàng)目配置Tomcat的方法步驟
- JavaWeb 入門篇:創(chuàng)建Web項(xiàng)目,Idea配置tomcat
- 沒(méi)有編輯器的環(huán)境下是如何創(chuàng)建Servlet(Tomcat+Java)項(xiàng)目的?
- Java 數(shù)據(jù)庫(kù)連接池c3p0 介紹
- Java 數(shù)據(jù)庫(kù)連接池 DBCP 的介紹
- Java 數(shù)據(jù)庫(kù)連接池 Tomcat介紹
相關(guān)文章
Java實(shí)戰(zhàn)之用Swing實(shí)現(xiàn)通訊錄管理系統(tǒng)
今天給大家?guī)?lái)的是Java實(shí)戰(zhàn)的相關(guān)知識(shí),文章圍繞著Swing實(shí)現(xiàn)通訊錄管理系統(tǒng)展開(kāi),文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06
java實(shí)現(xiàn)socket客戶端連接服務(wù)端
本文是個(gè)人剛剛開(kāi)始學(xué)習(xí)如何通過(guò)socket去發(fā)送信息下邊的案例,也是書(shū)上的在這留下筆記,最后附上一個(gè)實(shí)例,有需要的小伙伴可以參考下。2015-10-10
SpringBoot使用JdbcTemplate訪問(wèn)操作數(shù)據(jù)庫(kù)基本用法
這篇文章主要介紹了SpringBoot使用JdbcTemplate訪問(wèn)操作數(shù)據(jù)庫(kù)基本用法,Spring對(duì)數(shù)據(jù)庫(kù)的操作在jdbc上s面做了深層次的封裝,使用spring的注入功能,可以把DataSource注冊(cè)到JdbcTemplate之中。下文詳細(xì)內(nèi)容需要的小伙伴可以參考一下2022-02-02
Action訪問(wèn)Servlet的API的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Action訪問(wèn)Servlet的API的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
類似Object監(jiān)視器方法的Condition接口(詳解)
下面小編就為大家?guī)?lái)一篇類似Object監(jiān)視器方法的Condition接口(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)
一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)...2006-12-12

