JDBC - (04)Druid数据库连接池技术

文章介绍了数据库连接池的概念,强调了不使用连接池时的资源浪费问题,以及使用Druid连接池能提升性能和资源利用率。Druid作为阿里提供的数据库连接池,具有稳定性和监控功能。文章还详细讲解了如何通过硬编码和软编码两种方式创建Druid连接池。
摘要由CSDN通过智能技术生成


image-20230206074352715

JDBC -(04)Druid连接池技术

1. 连接性能消耗问题

//释放资源
connection.close();

我们向数据库发送一次请求,获取数据库连接connection,当向数据库发送sql语句并获取到返回结果之后,connection就被销毁掉了,这样不仅占用服务资源而且效率也会非常的慢,connection其实是可以复用的。

2. 数据库连接池的作用

2.1 不使用数据库连接池

  • 不使用数据库连接池,每次都通过DriverManager获取新的连接,用完直接抛弃,这样对资源的利用率太低。
  • 对应数据库服务器来说,压力太大。数据库服务器和Java程序对连接数也无法控制,很容易导致数据库服务器崩溃。

2.2 使用数据库连接池

  • 我们可以建立一个连接池,这个池中可以容纳一定数量的连接对象,一开始,我们可以先替用户创建好一些连接对象,等用户要拿连接对象时,就直接从池中获取,不用新建了,这样可以节省时间等用户用完之后,放回去,别人可以接着用。
  • 可以提高连接的使用率,当池中的现有连接都用完了,那么连接池可以向服务器申请新的连接池放到池中。
  • 直到池中的连接达到最大连接数,就不能再申请新的连接了。如果没有拿到连接的用户只能等待。

image-20230315155001099

3.常用的连接池产品

JDBC的数据库连接池使用 javax.sql.DataSource 接口进行规范,所有的第三方连接池都实现此接口,自行添加具体实现。也就是说,所有连接池获取连接和回收连接方法都一样,不同的只有性能和拓展功能。

常见的连接池产品:

  • DBCP:Apache提供的数据库连接池,速度相对c3p0较快,但因自身存在bug
  • C3P0:速度相对较慢,稳定性还可以
  • Proxoool:开源项目数据库连接池,有监控连接池状态的功能,稳定性较c3p0差一点
  • Druid:阿里提供的数据库连接池,性能稳定,有监控功能。

4.Druid连接池使用

4.1 导入Druid工具类jar

image-20230315161230068

image-20230315161249927

image-20230315161300390

image-20230315161315123

4.2 创建Druid连接池

创建Druid连接池有两种方式:

  • 硬编码方式(不推荐)
  • 软编码方式
4.2.1 硬编码方式

创建步骤:

1.创建一个druid连接池对象

2.设置连接池参数【必须 |非 必须】

3.获取连接【通用方法,所有连接池都一样】

4.回收连接【通用方法,所有连接池都一样】

创建Druid连接池对象,核心参数设置:

  • 必须参数:账号、密码、url、driverClass
  • 非必须参数:初始化个数、最大连接数量

应用举例:

package com.julissa.api.druid;


import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import org.junit.jupiter.api.Test;

import java.sql.SQLException;

public class DruidUse {
    @Test
    public void testHard() throws SQLException {

        //1.创建连接池对象
        DruidDataSource dataSource = new DruidDataSource();

        //2.设置连接参数(四个必须参数)
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://127.0.0.1:	3306/julissa");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");

        //3.获取连接
        DruidPooledConnection connection = dataSource.getConnection();
        System.out.println(connection);

        //数据库crud
        
        //4.回收连接
        connection.close();
    }
}
4.2.2 软编码方式

不直接再Java代码中编写配置信息

利用工厂模式,传入配置文件对象,创建连接池

创建步骤:

1.创建外部配置文件(src/druid.properties)

2.读取外部配置文件

3.通过Druid工具类的工厂模式创建连接池

4.获取连接

5.回收连接

应用举例:

外部配置文件

# Druid连接池配置参数,key固定命名
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/julissa
username=root
password=123456
@Test
public void testSoft() throws Exception {

    //1.读取外部配置文件 Properties
    Properties properties = new Properties();

    //src下的文件,可以使用类加载器提供的方法
    InputStream resourceAsStream = DruidUse.class.getClassLoader().getResourceAsStream("druid.properties");
    properties.load(resourceAsStream);

    //2.使用连接池的工具类的工厂模式,创建连接池
    DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

    //3.获取连接
    Connection connection = dataSource.getConnection();
    System.out.println(connection);

    //4.数据库crud

    //5.回收连接
    connection.close();
}
``
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值