Druid连接池的基本配置与使用

简介: Druid连接池的基本配置与使用

Druid简介


Druid是阿里巴巴的开源连接池组件,是世界上最好的连接池之一。Druid能对数据库连接进行有效管理和重用,最大化程序执行的效率。连接池负责创建和管理连接,程序只负责取用与归还。


以下是我画的示意图:


78a6c6ab6b614606b57d25b976c72c17.jpg


下面我来给大家介绍一下Druid的基本配置与使用,需要你有JDBC基础。可以跟着敲一下体验体验。


Druid的基本配置和使用


1.创建一个普通的Java项目,导入Druid的jar包和JDBC的驱动的jar包(注意:一定不要忘了导入这两个jar包,可以手动导入到lib目录下然后导入module或者用maven导入,百度搜索Druid就能找到GitHub的页面,在里面的中文帮助里有提示)


2.然后再项目的src目录下创建一个druid-config.properties的配置文件


3.在属性配置文件中配置如下:


driverClassName=com.mysql.cj.jdbc.Driver


url=jdbc:mysql://localhost:3306/files


username=root


password=zc20020106


initialSize=10


maxActive=20


其中driverClassName指JDBC驱动的名字,url是连接字符串,username指数据库的用户名,password指数据库密码,initialSize指程序启动时默认创建的数据库连接数,maxActive表示如果连接数大于intitialSize的数后创建的最大连接数。


4.创建一个DruidSimple类来用于测试今天的案例。


然后再main方法中编写代码如下,注释里有对代码的详细解释:


package com.haiexijun.sample;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DruidSample {
    public static void main(String[] args) {
        //1.加载属性文件
        Properties properties=new Properties();
        //DruidSample.class.getResource("src/druid-config.properties")表示获取
        // 当前DruidSample类路径下的属性文件的路径
        String propertyFile=DruidSample.class.getResource("/druid-config.properties").getPath();
        //下面这是一个容错的考虑,因为配置文件路径可能有中文或者空格。将要它转换为utf-8,然后对decode()进行try catch
        try {
            propertyFile =new URLDecoder().decode(propertyFile,"UTF-8");
            //读取配置文件
            properties.load(new FileInputStream(propertyFile));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //2.获取DataSource数据源对象(其实这里数据源可以理解为数据库),选择java.sql包下的DataSources
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        try {
            DataSource dataSource= DruidDataSourceFactory.createDataSource(properties);
            //3.创建数据库连接,获取Connection数据库连接对象对象
            //eg:这里创建20个数据库连接为例
            for (int i = 0; i < 20; i++) {
                conn=dataSource.getConnection();
            }
            //下面的操作就和jdbc一样了
            String sql="select id from myfile";
            ps= conn.prepareStatement(sql);
            rs= ps.executeQuery();
            while (rs.next()){
                System.out.println(rs.getInt("id"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //不要忘记finally来释放资源
            //但是这里使用连接池关闭和不使用连接池关闭有所不同,
            // 使用连接池conn.close()是将连接回收到连接池中,
            // 不使用连接池conn.close()关闭则直接释放连接
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

这里创建的是20个连接,刚好达到了最大值。如果创建21个连接,那么第21个连接的操作就要等前20个连接有一个被回收后,才会被执行操作。连接池里的连接在默认的情况下是处于sleep状态。直到程序获取连接后并对他调用。连接完成调用后执行close方法,则该连接又会回到连接池中,等待被调用。


。。。。我的项目目录结构。。。。。


e753edef6b09404fae6db399b0f7d83e.png

 

这里这是一个简单的Druid连接池案例,算是入门连接池了。但Druid的功能肯定不止如此啦,还要继续学习啊。谢谢大家的关注。有什么问题评论区见。

相关文章
|
监控 druid Java
Spring Boot 3 集成 Druid 连接池详解
在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot 3项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。
9292 2
Spring Boot 3 集成 Druid 连接池详解
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
SQL 监控 druid
强大的Druid
Druid数据库连接池介绍以及使用步骤
|
druid Java 数据库连接
数据库连接池及Druid使用步骤
数据库连接池及Druid使用步骤
1505 2
|
SQL 网络协议 关系型数据库
mysql 连接超时wait_timeout问题解决
com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or tes
|
12月前
|
SQL druid Java
JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO
JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO
494 0
|
边缘计算 Cloud Native
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
SOA架构,即面向服务的架构,它将系统中的所有功能都拆分为一个个独立的服务单元。这些服务通过相互间的沟通与配合,共同完成了整体业务逻辑的运作。在SOA架构中有几个核心概念:服务提供者、服务使用者、服务注册中心、服务规范、服务合同,这些概念清晰地阐述了服务应如何被提
403 6
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
|
druid Java 数据库
spring boot 整合 druid(深入浅出)
spring boot 整合 druid(深入浅出)
538 0
|
SQL 监控 druid
Spring Boot 整合 Druid 指南
Spring Boot 整合 Druid 指南
45462 3
|
SQL 监控 druid
SpringBoot配置Druid
SpringBoot配置Druid