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

一.概述:

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

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

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

二.设计模式:

为什么要使用工厂模式

 

 

数据源模块类图 :

三.MyBatis源码数据源实现

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

非连接池的数据连接:

 

MyBatis数据库连接池源码解析

数据结构如下:

 

 

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

 

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

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

 

算法流程图:

获取连接:

 

释放连接:

 

从连接池获取连接

 

 

 

 

 释放连接:

 

 

总结:

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

 

posted @ 2018-11-11 23:52  开心的鱼a1  阅读(913)  评论(0编辑  收藏  举报