Mybatis连接池介绍与分类 Mybatis使用POOLED UNPOOLED配置连接池的原理分析

article/2025/10/6 21:20:17

一、连接池

1.概念:其实就是一个容器(集合),存放数据库连接的容器。

当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器

容器其实就是一个集合对象,该集合必须是线程安全的,不能两个线程拿到统一连接

该集合还必须实现队列的特性:先进先出

2.好处:

​ 1.节约资源

​ 2.用户访问高效

3.实现:

1.标准接口:DataSource javax.sql包下的

​ 1.方法:获取连接

​ 获取连接:getConnection()

​ 归还连接:Connection.close()如果连接对象Connection是从连接池中获得的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接

2.一般我们不去实现它,有数据库厂商来实现

​ 1.C3P0:数据库连接池技术

​ 2.Druid:数据库连接池实现技术,由阿里巴巴提供的

二、Mybatis连接池

Mybatis 中也有连接池技术,但是它采用的是自己的连接池技术。

有三种方式的配置:

配置的位置:

在Mybatis的主配置文件SqlMapConfig.xml 配置文件中的dataSource标签,type属性就是表示采用何种连接池方式。

type属性的取值:POOLED			传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现UNPOOLED		采用传统的获取连接的方式,虽然也实现了javax.sql.DataSource接口,但是并没有使用池的思想JNDI			采用服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到的dataSource是不同的。注意:如果不是web或者maven的war工厂,是不能使用的。经常使用的tomcat服务器,采用连接池就是dbcp连接池

三、POOLED与UNPOOLED结果对比

POOLED

从池中取一个连接使用
在这里插入图片描述

UNPOOLED

每次都会创建一个新的连接

创建了用完就关闭 渣男
在这里插入图片描述

四、POOLED与UNPOOLED代码比较

MyBatis内部分别定义了实现了java.sql.DataSource接口的 UnpooledDataSource,PooledDataSource类来表示UNPOOLED、POOLED类型的数据源。

CTRL+N进行查找
在这里插入图片描述
两个都继承了DataSource

UNPOOLED配置连接池分析

找到getConnection
在这里插入图片描述
跟doGetConnection进去,发现在创建properties对象,传用户名密码
在这里插入图片描述
再跟进去,就发现了熟悉的DriverManager,我们先进入initializeDriver看

  1. initializeDriver负责组成驱动
  2. 创建连接
  3. 返回连接

在这里插入图片描述

这就是UNPOOLED,每次都会注册驱动,获取连接,返回连接

POOLED配置连接池分析

在这里插入图片描述
跟popConnection进去
在这里插入图片描述

代码解释

在这里插入图片描述
如果为null,同步代码块,这一点为了线程安全
在这里插入图片描述
idleConnection空闲的connection如果是控(取反——空闲的连接还有的话
在这里插入图片描述
这里可以看一下idleConnection发现就是一个集合对象,印证了前面说的定义
在这里插入图片描述
先去看空闲有没有,有就去一个出来remove0

在这里插入图片描述
活动的连接池数量小于设定的最大值就可以创建一个连接
在这里插入图片描述
目前的意思是有空闲的就给你拿一个空闲的,没有的话就看一下连接池有没有位置,给你创建一个新的
都不满足的话就只有拿一个最老的(最先进来的)把他返回获取。

pooled总的来说就是:
  1. 先去看空闲池有没有
  2. 再去看活动池是否到达最大数量,没达到就创建一个连接
  3. 活动池也满了就找活动池中最先进来的拿来设置和清理

(觉得有帮助的话点个赞嘻嘻)


http://chatgpt.dhexx.cn/article/AYTMyRel.shtml

相关文章

阶段3 1.Mybatis_07.Mybatis的连接池及事务_3 mybatis连接池的分类

2、mybatis中的连接池 mybatis连接池提供了3种方式的配置: 配置的位置: 主配置文件SqlMapConfig.xml中的dataSource标签,type属性就是表示采用何种连接池方式。 type属性的取值: POO…

Monkey Test简单介绍

什么是Monkey Test?顾名思义,就像一只猴子一样,它的下一步具有随机性。所以Monkey Test可以简单地理解为动作随机性测试! Monkey是android模拟器或设备上运行的一个程序。它可以生成伪随机用户事件(例如点击、触碰或滑…

monkey工具详解

第一部分:背景 1.为什么要开展压力测试? 提高产品的稳定性 提高产品的留存率 2.什么时候开始压力测试? 首轮功能测试通过后 下班后的夜间进行 第二部分:理论 1.什么是monkey? Monkey是发送伪随机用户事件的工…

monkey的基本使用

一、monkey介绍 1.功能:采用伪随机测试的方式,来完成app的稳定性测试 2.执行原理:通过monkey的shell脚本去执行安卓系统中自带的monkey.jar工具 3.通常用于盲测,压力测试和冒烟测试 1)盲测:忽略功能和业务逻…

Monkey使用详解

App monkey 使用篇 安装包下载: 下载mumu模拟器地址:http://mumu.163.com/baidu/ 下载adb安装包 地 址:http://www.downza.cn/soft/219906.html Adb环境变量 配 置:在path里新建adb安装路径即可。 cmd 打开命令提示符窗口输入&a…

monkey的基本定义及基本使用(菜鸟学习中)

一.monkey的定义 1.(转自 https://blog.csdn.net/beyond_f/article/details/78543070 ) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar; Monkey.jar程序是由一…

Android测试--monkey详细到炸的总结

一、Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试。monk…

APP稳定性测试利器 Monkey介绍、实战使用、日志分析

第一、Monkey简介 Monkey是什么? Monkey 是安卓官方提供的一个命令行工具,可以运行在Android模拟器和实体手机上。通过Monkey 来模拟用户的触摸、点击、滑动、系统按键的操作,来对APP进行压力测试、稳定性测试。换句话说,就是在乱…

Clumsy弱网、丢包测试工具

一、下载clumsy安装包,解压后打开clumsy.exe 二、ping www.baidu.com查看是否模拟成功 三、pc端模拟丢包和网络延迟 四、APP端模拟丢包和网络延迟 1.手机连接抓包工具charles 2.打开clumsy,在过滤器filtering中输入outbound and ip.DstAddr 192.168.…

【弱网】clumsy的filter语法设置

clumsy 官方说明 jagt WinDivert 的语法 https://github.com/basil00/Divert/wiki/WinDivert-Documentation#7-filter-languageDivert大神们的改版 clumsy-regoutbound 发送 inbound

弱网测试工具clumsy

clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。 简介 利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包…

使用clumsy模拟网络延迟

为何模拟网络延迟 由于最近打算做及时对战类的游戏,对于及时对战类的游戏,首先要解决的问题就是网络延迟的问题。网络延迟对于游戏的体验至关重要。那么开发一款网络游戏要怎么解决这一问题呢。想要解决网络延迟,首先就要模拟网络延迟。那么…

[测试]Clumsy网络模拟工具

笔者最近因为需要在局域网内模拟一个实际情况(即存在丢包、延迟等情况)。网上搜了很多工具,大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Clumsy。 (参考了http://jagt.github.io/clumsy/&#xff09…

curle(curley)

Queen Elizabeth is afraid of Mary. Bess Curle wrote the story. 这两句什么意思? 伊丽莎白女王害怕玛丽,Bess Curle写(说)出了这个道理。(这里的story成为道理,事实意义,不再只是故事的意思),希望对你有帮助&#x…

网络抖动工具clumsy

网络抖动工具clumsy 下载与安装 下载地址:https://download.csdn.net/download/Asia1752/85192646 使用 说明: 1、Lag(延迟),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况。 2、Drop(掉包),随机丢弃一…

网络丢包工具clumsy

以webrtc为例,未开始前 设置丢包率10%后,丢包会增加,如下图: Lag是延迟。设置后,增加网络延迟

Windows下网络环境模拟工具-Clumsy

公司设备需要模拟在弱网(如:延迟、丢包)环境下进行数据的传输,网上看资料找到一款工具Clumsy( 文章出处:Clumsy-Windows下网络环境模拟工具_clumsy工具_Hello,C!的博客-CSDN博客),安装进行模拟,基本可以满足…

弱网测试工具 clumsy

clumsy工具介绍 clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。下面根据工作中遇到过的实际场景介绍一下clumsy工具的使用方法。 下载安装:clumsy下载链接 场景:测试客户端下载文件失败&…

Clumsy的使用方法

Clumsy的使用方法: 1、 解压clumsy-0.2-win64.zip(下载地址:https://files-cdn.cnblogs.com/files/nimq/clumsy-0.2-win64.zip)注:只适用于Windows 64位电脑,其他系统版本需要下载适配的版本 2、 打开clu…

Clumsy-Windows下网络环境模拟工具

下载页 http://jagt.github.io/clumsy/cn/download 项目的代码可以在github上获取,在下载页面有编译好的版本。强烈建议在使用前花点时间阅读一下文档,来 了解 clumsy 的功能和限制。 目前的实现中有一些难以绕过的限制和问题,列表如下&…