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

数据库连接池(c3p0和德鲁伊)

目录

连接池介绍

 c3p0连接池

传统方法引入jar包

配置文件

德鲁伊连接池

德鲁伊工具类


传统jdbc数据库使用DriverManger来获取,每次向数据库建立连接需要将Connection加载到内存中,频繁的操作会造成占用很多系统资源,造成服务器崩溃,每次连接完如果程序出现异常会造成数据泄露,所以我们采用数据库连接池技术

连接池介绍

1.预先在缓存池中放入一定数量的连接,当需要建立数据库时,只需将缓存池中取出一个,使用完毕后再放回

2.数据据库连接池负责分配,管理和释放数据库连接,他允许应用程序重复使用一个现有的数据库连接,而不是建立一个

3.当应用程序向连接池请求的连接超过最大连接数量时,这些请求将被加入到等待队列中

 c3p0连接池

速度较慢,但稳定性好

传统方法引入jar包

public void testC3P0_01() throws Exception {//1. 创建一个数据源对象ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();//2. 通过配置文件mysql.properties 获取相关连接的信息Properties properties = new Properties();properties.load(new FileInputStream("src\\mysql.properties"));//读取相关的属性值String user = properties.getProperty("user");String password = properties.getProperty("password");String url = properties.getProperty("url");String driver = properties.getProperty("driver");//给数据源 comboPooledDataSource 设置相关的参数//注意:连接管理是由 comboPooledDataSource 来管理comboPooledDataSource.setDriverClass(driver);comboPooledDataSource.setJdbcUrl(url);comboPooledDataSource.setUser(user);comboPooledDataSource.setPassword(password);//设置初始化连接数comboPooledDataSource.setInitialPoolSize(10);//最大连接数comboPooledDataSource.setMaxPoolSize(50);    Connection connection = comboPooledDataSource.getConnection(); //这个方法就是从 DataSource 接口实现的connection.close(); 
}

配置文件

 public void testC3P0_02() throws SQLException {ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource("db");Connection connection = comboPooledDataSource.getConnection();connection.close();
}

德鲁伊连接池

是阿里提供的数据库连接池,集dbcp,c3p0,proxool优点于一身

public void testDruid() throws Exception {//1. 加入 Druid jar包//2. 加入 配置文件 druid.properties , 将该文件拷贝项目的src目录//3. 创建Properties对象, 读取配置文件Properties properties = new Properties();properties.load(new FileInputStream("src\\druid.properties"));//4. 创建一个指定参数的数据库连接池, Druid连接池DataSource dataSource =DruidDataSourceFactory.createDataSource(properties);Connection connection = dataSource.getConnection();connection.close();
}

德鲁伊工具类

将数据库进行封装处理


public class JDBCUtilsByDruid {private static DataSource ds;//在静态代码块完成 ds初始化static {Properties properties = new Properties();try {properties.load(new FileInputStream("src\\druid.properties"));ds = DruidDataSourceFactory.createDataSource(properties);} catch (Exception e) {e.printStackTrace();}}//编写getConnection方法public static Connection getConnection() throws SQLException {return ds.getConnection();}public static void close(ResultSet resultSet, Statement statement, Connection connection) {try {if (resultSet != null) {resultSet.close();}if (statement != null) {statement.close();}if (connection != null) {connection.close();}} catch (SQLException e) {throw new RuntimeException(e);}}
}
http://www.lryc.cn/news/132216.html

相关文章:

  • ARM--day6(实现字符、字符串收发的代码和现象,分析RCC、GPIO、UART章节)
  • 2023牛客暑期多校训练营9 B.Semi-Puzzle: Brain Storm
  • mysql中的窗口函数
  • 【双指针】经典数组双指针题LeetCode
  • 极智嘉x吉利汽车 x京东物流,引领汽车行业智慧物流新变革!
  • RK3588平台开发系列讲解(AI 篇)RKNN C API 详细说明
  • 【基础】Android Handler
  • c语言实现MD5算法
  • Apache Doris 2.0.0 特性分析
  • 如何做H5性能测试?
  • 【Docker】Docker Desktop配置资源:cpu、内存等(windows环境下)
  • 8.2.tensorRT高级(3)封装系列-内存管理的封装,内存的复用
  • Keepalived入门指南:实现故障转移和负载均衡
  • cuOSD(CUDA On-Screen Display Library)库的学习
  • c++函数指针基本用法
  • Java创建对象的几种方式
  • Docker实战专栏简介
  • 解放数据库,实时数据同步利器:Alibaba Canal
  • 机器学习基础之《分类算法(3)—模型选择与调优》
  • Datawhale Django后端开发入门 TASK03 QuerySet和Instance、APIVIew
  • Python 网页解析中级篇:深入理解BeautifulSoup库
  • IDEA 如何制作代码补丁?IDEA 生成 patch 和使用 patch
  • Redis专题-秒杀
  • C++笔记之std::move和右值引用的关系、以及移动语义
  • ES6自用笔记
  • 【BASH】回顾与知识点梳理(二十九)
  • Docker的Cgroup资源限制
  • AI智能语音机器人的基本业务流程
  • uniapp 上传比较大的视频文件就超时
  • CSS简介