Java Web

【黑马程序员新版JavaWeb基础教程,Java web从入门到企业实战完整版】

3 JDBC


文章目录

  • Java Web
  • 3 JDBC
  • 3.3 数据库连接池
  • 3.3.1 数据库连接池简介
  • 3.3.2 Druid 数据库连接池


3.3 数据库连接池

这里还是贴上一篇笔者之前写的文章,

java 服务的连接池占用情况 javaweb连接池_java

3.3.1 数据库连接池简介

【数据库连接池简介】

  • 数据库连接池是个容器,负责分配、管理数据库连接(Conneation)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
  • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏

【好处】

  • 资源重用
  • 提升系统响应速度
  • 避免数据库连接遗漏

【为什么要使用数据库连接池】

之前代码中使用连接是没有使用都创建一个Connection对象,使用完毕就会将其销毁。这样重复创建销毁的过程是特别耗费计算机的性能的及消耗时间的。

java 服务的连接池占用情况 javaweb连接池_数据库_02

数据库如果使用了数据库连接池后,就能达到Connection对象的复用

java 服务的连接池占用情况 javaweb连接池_java_03

提前申请数据库的连接,有用户需要时,从这个“容器”中取出给用户提供服务,用户使用完毕后,连接不会释放,会归还到“容器”。【这样每一次就不用现申请了】

【数据库连接池的实现】

  • 标准接口:DataSource
    官方(SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。该接口提供了获取连接的功能:
Connection getConnection()
  • 常见的数据库连接池
  • DBCP
  • C3P0
  • Druid
  • Druid(德鲁伊)
  • Druid连接池是阿里巴巴开源的数据库连接池项目
  • 功能强大,性能优秀,是Java语言最好的数据库连接池之一
3.3.2 Druid 数据库连接池

【Druid 使用步骤】

  1. 导入jar 包
    首先下载jar 包
    官方地址:https://repo1.maven.org/maven2/com/alibaba/druid/1.2.11/

java 服务的连接池占用情况 javaweb连接池_数据库_04

下载下来

java 服务的连接池占用情况 javaweb连接池_java 服务的连接池占用情况_05

将其复制到项目的lib目录下

java 服务的连接池占用情况 javaweb连接池_java_06

配置成模块有效

java 服务的连接池占用情况 javaweb连接池_java 服务的连接池占用情况_07

java 服务的连接池占用情况 javaweb连接池_前端_08

java 服务的连接池占用情况 javaweb连接池_数据库连接池_09

  1. 定义配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true
username=root
password=200039
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

java 服务的连接池占用情况 javaweb连接池_java_10

  1. 加载配置文件
  2. 获取数据库连接池对象
  3. 获取连接
package com.dingjiaxiong.druid;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Map;
import java.util.Properties;

/**
 * ClassName: DruidDemo
 * date: 2022/9/10 20:06
 * 德鲁伊的使用
 * @author DingJiaxiong
 */

public class DruidDemo {
    public static void main(String[] args) throws Exception {


        System.out.println(System.getProperty("user.dir"));

        //加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("../jdbc-demo/src/druid.properties"));

        // 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

        // 获取数据库连接
        Connection connection = dataSource.getConnection();

        System.out.println(connection);
    }
}

运行结果

java 服务的连接池占用情况 javaweb连接池_数据库连接池_11

这里有个路径的小问题,可以通过打印出当前路径去寻找。