连接池&Java导包

目录

一、Java导包

二、 数据库连接池

1. 概述

2. 常见参数

3. 常见连接池

4. Druid连接池(重点)

核心功能:

使用方法:

导入依赖

配置连接池:

代码配置:

配置文件:

获取连接:

归还连接:

工具类封装:

5. 总结


一、Java导包

以将下述jar包导进idea中为例(其中我用的idea版本是2017版本的,但是都大差不差)

1. 首先创建一个普通的Java项目(并在src下创一个package包承载jar包):

将jar包从文件夹中拖进来:

可以看到这里拖进来后其实只是一个空壳,本质上这个包里的所有东西并没有得到释放。

2.打开文件中的项目结构

 得到这个界面(选择库-->Java):

3.找到项目所在位置后打开jar包

接着一直选择OK直至 :

随后点击右下角的Apply应用,随后点OK关闭界面即可。 

4. 得到结果

此时这里的jar包就可以打开了,不再是空壳了。

二、 数据库连接池

1. 概述

  • 作用:预先创建并管理数据库连接,避免频繁创建和销毁连接,提升性能。

  • 优势

    • 节省资源:连接复用,减少创建和销毁的开销。

    • 提升性能:直接从池中获取连接,减少等待时间。

2. 常见参数

参数名称含义默认值作用示例
初始大小(Initial Size)启动时初始化的连接数0提前创建连接,减少首次获取连接的等待时间initialSize=5
最小空闲连接数(Min Idle)池中保持的最小空闲连接数0确保池中始终有一定数量的空闲连接,避免频繁创建新连接minIdle=3
最大空闲连接数(Max Idle)池中允许的最大空闲连接数8限制空闲连接数量,避免资源浪费maxIdle=10
最大连接数(Max Active)池中允许的最大连接数8限制并发连接数,防止数据库服务器过载maxActive=20
最大等待时间(Max Wait)获取连接的最大等待时间(单位:毫秒)-1(无限等待)设置获取连接的超时时间,避免线程长时间阻塞maxWait=3000

其他常用参数:

参数名称含义默认值示例
连接测试周期(Time Between Eviction Runs)检测连接是否可用的周期(单位:毫秒)60000(60秒)timeBetweenEvictionRunsMillis=30000
最小生存时间(Min Evictable Idle Time)连接在池中空闲的最小时间,超过此时间会被检测并回收30000(30秒)minEvictableIdleTimeMillis=60000
连接测试SQL(Validation Query)用于检测连接是否可用的SQL语句根据数据库类型自动选择(MySQL为SELECT 1validationQuery=SELECT 1

3. 常见连接池

  • DBCP:Apache开源连接池,简单易用。

  • C3P0:开源连接池,功能较为丰富。

  • Druid:阿里巴巴开源连接池,性能优越,功能强大。

4. Druid连接池(重点)

核心功能

  • 高效连接池:提供高性能的数据库连接管理。

  • SQL监控:内置StatFilter插件,可监控SQL执行性能。

  • 密码加密:支持PasswordCallback,避免明文存储密码。

  • 日志记录:支持多种日志框架(如Log4j),记录SQL执行情况。

  • 扩展性:通过Filter机制,可扩展JDBC功能。

使用方法

导入依赖

添加Druid的jar包。

配置连接池
代码配置
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///your_database");
dataSource.setUsername("your_username");
dataSource.setPassword("your_password");
dataSource.setInitialSize(5); // 初始连接数
dataSource.setMaxActive(10); // 最大连接数
dataSource.setMaxWait(2000); // 最大等待时间(毫秒)
配置文件

创建druid.properties文件,配置如下:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///your_database
username=your_username
password=your_password
initialSize=5
maxActive=10
maxWait=2000
获取连接
Connection conn = dataSource.getConnection();
归还连接
conn.close(); // 实际上是归还到连接池

工具类封装

创建工具类JdbcUtils,简化连接获取和资源关闭:

package cn.tx.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.*;
import java.util.Properties;

public class JdbcUtils {
    private static DataSource dataSource;

    static {
        Properties props = new Properties();
        try (InputStream in = JdbcUtils.class.getResourceAsStream("/druid.properties")) {
            props.load(in);
            dataSource = DruidDataSourceFactory.createDataSource(props);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        try {
            if (rs != null) rs.close();
            if (stmt != null) stmt.close();
            if (conn != null) conn.close(); // 归还连接
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

5. 总结

  • 连接池的作用:提升性能、节省资源。

  • Druid的优势:功能强大、性能优越、支持监控和加密。

  • 使用方式:通过代码或配置文件配置连接池,使用工具类简化操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值