当前位置: 首页 > news >正文

连接池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的优势:功能强大、性能优越、支持监控和加密。

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

http://www.lryc.cn/news/539947.html

相关文章:

  • 一些耳朵起茧子的名词解释
  • HBuilderX中,VUE生成随机数字,vue调用随机数函数
  • C#发送邮件
  • 2025-2-19学习笔记 : this关键字,constructor结构体,class类
  • 避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程
  • 【Quest开发】全身跟踪
  • 通过BingAPI爬取Bing半个月内壁纸
  • Linux升级Anacodna并配置jupyterLab
  • ctfshow web入门 web11-web24
  • Windows 环境下配置多个不同版本的 Maven
  • web入侵实战分析-常见web攻击类应急处置实验1
  • 适配器模式 Adapter Pattern
  • Android 动态加入Activity 时 manifest 注册报错解决。使用manifestPlaceholders 占位
  • 芝加哥学派(Chicago School):金融与经济学的创新力量(中英双语)
  • 3分钟了解内外网文件传输:常见方法、注意事项有哪些?
  • Python学习心得常用的内置函数
  • VMware Workstation16安装Centos7以及静态IP设置
  • 【核心算法篇十九】《 DeepSeek因果推断:双重差分模型如何破解政策评估的「时空难题」》
  • Token Embedding(词嵌入)和Positional Encoding(位置编码)的矩阵形状关系及转换过程
  • 多个用户如何共用一根网线传输数据
  • U-Net 与深度学习的完美结合:图像分割的高效解决方案
  • nginx ngx_http_module(9) 指令详解
  • 【从0做项目】Java搜索引擎(4)——性能优化~烧脑~~~
  • 【HarmonyOS Next】鸿蒙应用进程和线程详解
  • 【前端ES】ECMAScript 2023 (ES14) 引入了多个新特性,简单介绍几个不为人知但却好用的方法
  • 【EndNote】WPS 导入EndNote 21
  • 网上购物|基于SprinBoot+vue的网上购物系统(源码+数据库+文档)
  • AI 语言模型发展史:统计方法、RNN 与 Transformer 的技术演进
  • Pycharm中查找与替换
  • 有向图的强连通分量: Kosaraju算法和Tarjan算法详解