百度自助网站建设百度极速版推广
目录
一、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 1 ) | validationQuery=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的优势:功能强大、性能优越、支持监控和加密。
-
使用方式:通过代码或配置文件配置连接池,使用工具类简化操作。