国货之光Druid连接池技术使用

文章介绍了使用连接池如Druid的目的是提高程序性能,减少资源开销,并详细阐述了Druid连接池的配置方法,包括外部配置文件和代码实现。Druid因其综合优势成为常用的数据库连接池选择。
摘要由CSDN通过智能技术生成

1、为何要使用连接池:

使用连接池的主要目的是提高程序的性能和响应速度,同时减少资源的开销;连接池可以在应用程序启动时就创建好一定数量的数据库连接,这些连接可以被复用来执行多个查询或更新操作;

连接池会自动帮助应用程序管理连接的生命周期,避免了频繁的开启和关闭连接的开销,减少了连接的创建时间以及数据库的资源开销。

另外,连接池还可以帮助应用程序维持可伸缩性,即在高负荷的情况下,可以根据需要增加或减少连接数,以确保性能和可靠性。

不使用连接池造成的缺点:

(1)不使用数据库连接池,每次都通过DriverManager获取新连接,用完直接抛弃断开, 连接的利用率太低,太浪费。

(2)对于数据库服务器来说,压力太大了。我们数据库服务器和Java程序对连接数也无法控制 ,很容易导致数据库服务器崩溃。

使用连接池:

我们可以建立一个连接池,这个池中可以容纳一定数量的连接对象,一开始, 我们可以先替用户先创建好一些连接对象,等用户要拿连接对象时,就直接从池中拿, 不用新建了,这样也可以节省时间。然后用户用完后,放回去,别人可以接着用。

可以提高连接的使用率。当池中的现有的连接都用完了,那么连接池可以向服务器申 请新的连接放到池中。

直到池中的连接达到“最大连接数”,就不能在申请新的连接了,如果没有拿到连接的用户只能等待。

2、为何选择Druid连接池

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

1、DBCP 是Apache提供的数据库连接池,速度相对c3p0较快,但因自身存在BUG

2、C3P0 是一个开源组织提供的一个数据库连接池,速度相对较慢,稳定性还可以

3、Proxool 是sourceforge下的一个开源项目数据库连接池,有监控连接池状态的功能, 稳定性较c3p0差一点

4、Druid 是阿里提供的数据库连接池,据说是集DBCP 、C3P0 、Proxool 优点于一身的数据库连接池,妥妥国货之光!!!!

3、Druid软编码方式:

3.1、外部配置文件

在src目录下创建一个:druid.properties文件

# key = value => java Properties读取(key | value)
# druid配置的key固定命名
# druid连接池需要的配置参数,key的命名是固定的
​
 *   必须参数:  账号   username
 *             密码   password
 *             url
 *             driverClassName
 *   非必须参数:
 *           初始化个数
 *           最大数量等等  目前不推荐设置
 
driverClassName=com.mysql.cj.jdbc.Driver
username=root
password=mysql
url=jdbc:mysql://localhost:3306/jdbc_study

3.2、软编码代码

/**
 * 软编码方式
 * 通过读取外部配置文件的方法,实现druid连接池对象
 */
public class DruidUsePart {
    @Test
    public void softtest() throws Exception {
        //1.读取外部配置文件 到Properties对象中
        Properties properties = new Properties();
​
        //src下的文件,可以使用类加载器提供的方法
        /**
         * TODO:
         *     DruidUsePart.class      当前类
         *     getClassLoader()        获取当前类的类加载器
         *     getResourceAsStream()   读取文件
         */
        //创建输入流
        InputStream ips = DruidUsePart.class.getClassLoader()
        .getResourceAsStream("druid.properties");
        
        //将输入流(外部配置文件)读入Properties对象中
        properties.load(ips);
        
        //2.使用连接池的工具类的工程模式,创建连接池
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
        Connection connection = dataSource.getConnection();
        //数据库的CURD操作
        
        //回收连接
        connection.close();
    }
}

当中重点:都是

简单步骤:

1.创建Properties对象;2.创建输入流,用类加载器提供的方法;3.将输入流读入到properties对象中;

4.使用连接池工程模式,创建连接池;5.获取连接

//1.创建Properties对象
Properties properties = new Properties();
//2.创建输入流,用类加载器提供的方法
InputStream ips = JdbcUtils.class.getClassLoader()
.getResourceAsStream("jdbc.properties");
//3.将输入流读入到properties对象中
properties.load(ips);
//4.使用连接池工程模式,创建连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
//5.获取连接
Connection connection = dataSource.getConnection();

load(InputStream in):从指定的输入流中加载属性列表,对应的文件应该是 Properties 文件格式,可以是 XML 格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值