MyBatis源码解析之数据源(含数据库连接池简析)

Posted 开心的鱼a1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis源码解析之数据源(含数据库连接池简析)相关的知识,希望对你有一定的参考价值。

一.概述:

常见的数据源组件都实现了javax.sql.DataSource接口;

MyBatis不但要能集成第三方的数据源组件,自身也提供了数据源的实现;

一般情况下,数据源的初始化过程参数较多,比较复杂;

二.设计模式:

为什么要使用工厂模式

 

 

数据源模块类图 :

三.MyBatis源码数据源实现

MyBatis数据源通过工厂模式实现了,非连接池的数据连接,和数据库连接池。

非连接池的数据连接:

 

MyBatis数据库连接池源码解析

数据结构如下:

 

 

使用动态代理封装了真正的数据库连接对象,进行了方法增强:使用前检查连接是否有效,关闭时对连接进行回收;

 

连接池配置文件配置的数据在这里映射。

用于管理PooledConnection对象状态的组件,通过两个list分别 管理空闲状态的连接资源和活跃状态的连接资源;

 

算法流程图:

获取连接:

 

释放连接:

 

从连接池获取连接

 

 

 

 

 释放连接:

 

 

总结:

MyBatis数据源模块使用了工厂模式,分别实现了非数据源连接和数据库连接池。数据库连接池算法十分精简易懂,这对我们后续学习c3p0 ,德鲁伊等其他连接池打下了坚实基础。

 

以上是关于MyBatis源码解析之数据源(含数据库连接池简析)的主要内容,如果未能解决你的问题,请参考以下文章

简析数据库连接池

Mybatis源码分析三-数据源模块分析,工厂模式的使用

终结篇:MyBatis原理深入解析

Mybatis之连接池

mybatis深入理解-----Mybatis数据源与连接池

《深入理解mybatis原理3》 Mybatis数据源与连接池