当前位置:网站首页>JDBC技术(三)——使用Druid数据库连接池测试
JDBC技术(三)——使用Druid数据库连接池测试
2022-08-09 01:30:00 【--流星。】
什么是数据库连接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。
一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。
数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。
连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
前期准备
1、和JDBC技术(二)——设置通用的sql和配置文件一样
2、除此之外,导入另外两个jar包
项目结构
代码编写
改动不是很大,我就不全贴了
1、工具类
package com.lx.jdbc03.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/** * @author 流星 */
public class JDBCUtil3 {
static DataSource dataSource = null;
static{
try {
// 加载配置文件并转换为流,加载到properties对象中
Properties properties = new Properties();
InputStream is = JDBCUtil3.class.getClassLoader()
.getResourceAsStream("druid.properties");
properties.load(is);
// 创建连接池
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
return dataSource.getConnection();
} catch (Exception e) {
throw new RuntimeException("获取连接失败!");
}
}
public static void close(PreparedStatement preparedStatement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2、druid配置文件
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///test?useSSL=true&serverTimezone=GMT%2B8
username=root
password=123456
initialSize=5
maxActive=10
maxWait=1000
minIdle=1
测试结果
附:参考资料
边栏推荐
- 4-3 Matplotlib库 条形图
- RS&FSW测试脚本
- 4-1 Matplotlib库 数据分析常用图
- ffplay playback control
- Bugs encountered in remote control projects
- 远程控制项目遇到的bug
- 【.NET 6】开发minimal api以及依赖注入的实现和代码演示
- LeetCode精选200道--字符串篇
- 【图像去噪】基于边缘增强扩散 (cEED) 和 Coherence Enhancing Diffusion (cCED) 滤波器实现图像去噪附matlab代码
- 轻量化网络ChannelNet--channel-wize Conv在channel维度卷积
猜你喜欢
随机推荐
webrtc 编译
椭圆曲线复习
基于机器学习之模型树短期负荷预测(Matlab代码实现)
typescript91-添加任务基本实现
使用百度EasyDL实现智能垃圾箱
ABAP 报表中如何以二进制方式上传本地文件
Go-12-结构体
js文件的处理
多语种翻译-免费多语种翻译软件
torch.utils.data.DataLoader
jetson nano 开机闪一下然后黑屏
全文翻译:EDPB 基于设计和默认的数据保护指南
typescripet92-添加任务功能优化
论文笔记:SAITS: SELF-ATTENTION-BASED IMPUTATION FOR TIMESERIES
入门数据库Days6
ONNX是什么?怎么用?[简明解读版]
【元胞自动机】基于元胞自动机模拟社会力因素下的灾害人员疏散应急仿真附matlab代码
String compression
设计师设计相关图表时,如何运用设计技巧与合理的用户体验?【大屏可视化(PC端、移动端)】
makefile文件编译