MySql三(数据库连接池)

使用DBUtils连接池对mysql数据库操作(三) 使用DBUtils连接池对mysql数据库操作 第三节 使用DBUtils连接池 文章目录使用DBUtils连接池对mysql数据库操作前言一、数据库连接池是什么?二、实现数据库连接池1.新建项目,在src目录下创建lib目录,导入相关jar包(如有需要,可下方评论)2.在src目录下,新建一个dbpool.properties配置文件3.在dbpool.properties文件中写入连接数据库数据4.在src目录下,新建utils包,创建JDBCPoolUtils工具类三、测试JDBCPoolUtils 阅读详情

1、数据库连接池

数据库连接是一种关键的、有限的资源,这一点在多用户的网页应用程序中体现得尤为突出。频繁的建立和销毁连接会造成资源的浪费。因此出现数据库连接池。
这里写图片描述
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。

这里写图片描述

2、数据库连接池原理

数据库连接池其实和线程池有着相似的原理,都是节约资料,减小我们频繁的建立和断开连接,从而减小开销。
有了数据库连接池,每次创建连接都从连接池中取出,不用的时候再放回连接池。

1、连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。

2、使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。

3、还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

在java中实现数据库连接池
1、实现DataSource接口,在构造函数中批量创建数据库的连接,并把这些连接保存到集合中
2、实现getConnection方法,每一次调用连接从getConnection中获取,返回集合中的一个连接给用户。
3、关闭连接的时候,把连接返回到连接池的集合中。

3、dbcp连接池使用

1、导包

commons-dbcp-1.4.jar
commons-pool-1.5.6.jar

2、properties配置文件

Properties prop = new Properties();

                        prop.load(new FileInputStream("src/dbcp.properties"));

3、调用连接池中的连接

DataSource dataSource =  BasicDataSourceFactory.createDataSource(prop);

示例代码

   //dbcp连接池使用
    @Test
    public void Test2() throws Exception {
         //1、导包
        // 2、获得加载配置文件的Prop
        Properties prop = new Properties();

        prop.load(new FileInputStream("src/db.properties"));

        // 3、连接池
        DataSource dataSource = BasicDataSourceFactory.createDataSource(prop);

        Connection conn = dataSource.getConnection();
        Statement st = conn.createStatement();

        String sql = "select * from t_user ";

        ResultSet rs = st.executeQuery(sql);

        while (rs.next()){
            String name=rs.getString("name");
            String password =rs.getString("password");
            System.out.println("name----"+name+"   password------"+password);
        }
        rs.close();

        st.close();

        conn.close();

    }

4、c3p0连接池使用

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等
示例:
配置文件

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
  <default-config>
     <property name="driverClass">com.mysql.jdbc.Driver</property>
     <property name="jdbcUrl">jdbc:mysql:///student</property>
     <property name="user">root</property>
     <property name="password">1234</property>

    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
  </default-config>



  <named-config name="oracle"> 
    <property name="driverClass">com.mysql.jdbc.Driver</property>
     <property name="jdbcUrl">jdbc:mysql:///student</property>
     <property name="user">root</property>
     <property name="password">1234</property>

    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
  </named-config>


</c3p0-config>

java代码

@Test
    public void test1() throws SQLException {
        //1、导包
        //2、获取连接池
        ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");

        Connection conn = dataSource.getConnection();

        String sql = "select * from t_student;";

        Statement st = conn.createStatement();

        ResultSet re = st.executeQuery(sql);

        while (re.next()) {
            String name = re.getString("name");
            String cl = re.getString("class");
            System.out.println("name---" + name + "pass---" + cl);
        }
        re.close();

        st.close();

        conn.close();

    }

5、c3p0、dbcp比较

这里写图片描述

现在常用的开源数据连接池主要有c3p0、dbcp和proxool三种,其中:
hibernate开发组推荐使用c3p0;
spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect,告诉连接被重置,这个设置可以解决);
hibernate in action推荐使用c3p0和proxool;

JDBC访问数据库操作详解(三)之数据库连接池:以MySQL为例 JDBC访问数据库操作详解(三)之数据库连接池:以MySQL为例 1. 数据库连接池简介 ​ 传统获取数据库连接的方式存在的问题: 每一次获取连接时都需要向数据库发送请求建立连接,耗时、效率低 访问结束后会断开与数据库的连接,下次访问时需要重新建立连接 并发访问量较大时,网站性能会受到很大的影响 安全性和稳定性相对较差 使用连接池技术: 原理:创建一个连接池pool,在该连接池创建时,会先向数据库申请建立多个连接(初始连接数),当用户需要连接时直接从连接池中获取即可 访问结束后会将连接归还给连接池,可 阅读详情

相关推荐

基础组件(三):mysql连接池

池式组件: mysql连接池的实现

vision_wei_的博客 1722

数据库连接数和连接池连接数关联区别

1、数据库连接数,即数据库最多能够同时接受的客户连接数。 2、在没有数据库连接池的情况下, 一个客户每次访问, 就要创建一个数据库连接, 执行SQL, 获取结果,然后关闭、释放掉数据库连接,问题就在于创建一个数据库连接,是一个很消耗资源,花费很多时间的操作,于是数据库连接池产生了。 3、数据库连接池预先打开一定数量的数据库连接,并维持着连接。 4、当客户要执行SQL语句的时候,从数据库连接池里获取一个连接,执行SQL, 获取结果, 然后把数据库连接,交还给数据库连接池。 5、假如一个session

m0_50635229的博客 2721

大模型技术驱动智慧矿山数字化转型

多模态大模型作为AI领域的前沿技术,通过融合视觉、传感器等多源数据,构建了强大的环境理解与决策能力。其核心价值在于打破数据孤岛,实现实时分析与智能响应,特别适用于工业场景中的复杂系统优化。在智慧矿山建设中,该技术通过数字孪生、设备自诊断和智能调度等模块,显著提升了安全生产效率和资源利用率。典型应用包括基于强化学习的采掘路径规划、多层级灾害预警体系构建,以及可自我更新的矿山知识图谱系统,这些创新正在推动传统矿业向数字化、智能化方向转型。

weixin_29061531的博客 222

IIS并发连接数及性能优化

IIS并发连接数及性能优化 如果要查看IIS连接数,最简单方便的方法是通过“网站统计”来查看,“网站统计”的当前在线人数可以认为是当前IIS连接数。然而,“网站统计”的当前在线人数统计时间较长,一般为10分钟或15分钟,再加上统计技术及统计机制的问题,从而会产生或多或少的统计误差。 如果要想知道确切的当前网站IIS连接数的话,最有效的方法是通过windows自带的系统监视器来查看。这正是

全欣 的专栏 5万+

Autoware1.14-摄像头目标检测YOLO-V3

在Autoware1.14中部署YOLOV3

weixin_43687753的博客 3139

ZYNQ程序固化实战:从BOOT.bin生成到QSPI/SD卡双启动模式详解

本文详细解析了ZYNQ 7000系列程序固化的完整流程,重点解决了程序断电丢失问题。通过实战演示,从生成BOOT.bin文件到配置QSPI与SD卡双启动模式,逐步指导开发者实现程序在外部存储中的永久驻留,确保产品脱离调试器独立运行。

weixin_29193259的博客 517

数据库连接池和mysql的最大连接数的区别

什么叫做数据库连接池 连接池的作用是什么? 数据库连接池,简称dbcp database connection pool 存在意义: 数据库的连接是非常耗费系统资源的,一个应用通常都是需要与数据库打交道,也就需要经常连接数据库,这样导致浪费大量系统资源; 连接池的原理就是:我事先创建好几个数据库连接放着,当我的系统需要操作数据库时就从连接池里直接拿连接,并将这个连接标记为 忙 ;用完后在放会池中,...

weixin_39166924的博客 3532

Cadence原理图设计10个高效技巧:从封装绑定到BOM表导出全流程

本文为硬件工程师提供了一套Cadence OrCAD Capture CIS原理图设计的高效实战指南。文章深度解析了从封装库的精准管理与CIS数据库绑定、封装批量处理技巧,到设计缓存清理、跨页信号追踪,再到关键的DRC检查、网表导出以及智能BOM报表生成的全流程核心技巧,旨在帮助工程师提升设计效率与可靠性,规避常见错误。

weixin_29178069的博客 201

mysql合理配置连接池数量

mysql5.6配置连接池

Developer of XingKong22star 3万+

BepInEx插件开发实战:用Visual Studio快速创建你的第一个Unity Mod(2024新版)

本文是2024年新版BepInEx插件开发实战指南,详细讲解如何使用Visual Studio快速创建你的第一个Unity Mod。内容涵盖专业开发环境搭建、插件生命周期解析、利用HarmonyX进行游戏代码注入、实现实时调试与热重载技巧,以及项目配置与打包发布全流程,助你从Mod使用者转变为创造者。

weixin_29002595的博客 339

具身大小脑全栈全网独家复现|LLM链式推理+边缘VLA感知+毫秒级运动小脑、优化人形步态僵硬运动滞后、打通思考-行走-操作全链路适配居家工业多场景落地

高层决策大脑(异步10Hz,GPU算力):轻量化机器人微调LLM+RhinoVLA边缘视觉大模型,负责自然语言链式工序拆解、全局环境语义感知、目标物体筛选、跨机器人动作适配,输出粗粒度运动目标,不介入底层伺服计算;依托View Registry实现异构机器人动作对齐,适配多形态机器人切换;中层调度小脑(硬实时1kHz,CPU算力)

qq_36130719的博客 255

入门数据库连接数和连接池理解

一、环境与配置 数据库:MySQL 版本:5.7.29 语言:Java 语言版本:JDK8 CPU:i5-7500 内存:16GB 2400Mhz 二、代码 喜欢干货的直接Copy,转载请注明出处。 import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Driver...

AKUK的专栏 764

图形推理2-四大类六提示

图形推理笔记2

小y的学习笔记 6739

一个在线OJ系统的诞生(三)数据库层(DB Layer)MySQL连接池

本文介绍了数据库连接池的实现原理及其在OJ系统的应用。连接池通过预先创建并管理固定数量的数据库连接(默认4个),解决了频繁创建/销毁连接带来的性能问题。核心技术包括: 数据结构:使用vector存储连接,配合mutex保证线程安全 同步机制:通过condition_variable实现"连接不可用则等待,有连接归还则唤醒" 连接管理:提供阻塞式get()和带超时的try_get(),用mysql_ping检查连接活性 资源生命周期:严格遵循"获取-使用-归还"模式,防

2403_87752060的博客 437

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 394

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

监控mysql连接池信息_Java数据库连接池(三)

Java数据库连接池(三)连接池监控工具前两篇博文阐述了连接池都有一些共性的地方,其结构大致相同,都具备几个概念,DataSource,Connection,ProxyConnection,Pool,PooledDataSource,PhysicalConnection、PooledConnection。那么是否可以根据连接池的这些特性,开发出一款针对于大部分连接池的监控工具,通过该监控工具我们可...

weixin_33524659的博客 682

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ssm框架mysql连接池_SSM框架搭建之数据库连接池(三)

SSM框架搭建之数据库连接池(三)Spring提供了两个这样的数据源(都位于org.springframework.jdbc.datasource程序包里):DriverManagerDataSource:这个类实现了javax.sql.DataSource接口,但它并没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接。因此,这个数据源类比较适合...

weixin_35675101的博客 296

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Azure 数据库服务集成终极指南:Go语言快速连接MySQL、PostgreSQL与Cosmos DB开发实战

想要在Go语言应用中快速集成Azure数据库服务吗?Azure SDK for Go为开发者提供了完整的解决方案,让您能够轻松连接和管理Azure Database for MySQL、PostgreSQL以及Cosmos DB。本文将为您详细介绍如何使用这个强大的SDK进行数据库服务集成,无论您是新手还是有经验的开发者,都能快速上手!🚀 ## 📊 Azure数据库服务概览 Azure S

gitblog_00692的博客 618

mysql 连接池 dbcb2_从零开始手写 mybatis (三)jdbc pool 从零实现数据库连接池

前景回顾第一节 从零开始手写 mybatis(一)MVP 版本 中我们实现了一个最基本的可以运行的 mybatis。本节我们一起来看一下如何实现一个数据库连接池。为什么需要连接池?数据库连接的创建是非常耗时的一个操作,在高并发的场景,如果每次对于数据库的访问都重新创建的话,成本太高。于是就有了“池化”这种解决方案。这种方案在我们日常生活中也是比比皆是,比如资金池,需求池,乃至人力资源池。思想都是共...

weixin_36048031的博客 280

hibernate连接mysql 反射_mysql数据库连接池使用(三)数据库元数据信息反射数据库获取数据库信息...

有时候我们想要获取到数据库的基本信息,当前程序连接的那个数据库,数据库的版本信息,数据库中有哪些表,表中都有什么字段,字段都是什么类型。等等一些信息,我们称之为数据库的元数据信息。实际开发中hibernate等orm框架或者代码生成器都是通过元数据信息获取库、表的信息进行封装和操作。元数据主要有三种:DatabaseMetaData元数据信息(获取数据库的信息)ResultSetMetaData...

weixin_42361018的博客 183

mysql数据库连接池使用(三)数据库元数据信息反射数据库获取数据库信息

1.1.mysql数据库连接池使用(三)数据库元数据信息反射数据库获取数据库信息 有时候我们想要获取到数据库的基本信息,当前程序连接的那个数据库,数据库的版本信息,数据库中有哪些表,表中都有什么字段,字段都是什么类型。等等一些信息,我们称之为数据库的元数据信息。实际开发中hibernate等orm框架...

weixin_34303897的博客 89

MySql数据库

数据库 1.初识MySQL 1.1. 数据库分类 关系型数据库 (SQL) MySQL,Oracle,Sql Server… 通过表和表之间,行和列之间的关系进行数据的存储 非关系型数据库 (NoSQL) Not Only Redis, MongDB 非关系型数据库,对象存储,通过对象的自身的属性来决定 1.2.三大范式 第一范式(1NF) 原子性:保证每一列不可再分 第二范式(2NF) 前提:满足第一范式 每张表只描述一件事情 第三范式(3NF) 前提:满足第一范式和第二范式 第三范式

weixin_45174023的博客 125

python两个list对比去重_Python 用DBUtils 建立mysql 数据连接池

DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。DBUtils实际上是一个包含两个子模块的Python包,一个用于连接DB-API 2模块,另一个用于连接典型的PyGreSQL模块。全局的DB-API 2变量DBUtils 文件SteadyDB.py 用于稳定数据库连接PooledDB.py 连接池PersistentDB.py 维持持续的数据库连接...

weixin_33316366的博客 119

提升Rust数据库性能:rust-mysql-simple连接池最佳实践

在Rust开发中,数据库连接管理是影响应用性能的关键因素之一。**rust-mysql-simple**作为一款轻量级MySQL客户端库,提供了高效的连接池实现,能够显著减少数据库连接开销,提升并发处理能力。本文将分享使用rust-mysql-simple连接池的核心技巧,帮助开发者轻松优化数据库交互性能。 ## 为什么需要连接池? 数据库连接的创建和销毁是高成本操作,频繁建立连接会导致: -

gitblog_00749的博客 277
上一篇: JDBC
下一篇: Filter过滤器
android_xiaogang
博客等级 码龄12年 89粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值