zoukankan      html  css  js  c++  java
  • MyBatis源码解析之数据源(含数据库连接池简析)

    一.概述:

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

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

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

    二.设计模式:

    为什么要使用工厂模式

     

    数据源模块类图 :

    三.MyBatis源码数据源实现

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

    非连接池的数据连接:

    MyBatis数据库连接池源码解析

    数据结构如下:

     

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

     

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

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

    算法流程图:

    获取连接:

    释放连接:

    从连接池获取连接

     

     释放连接:

     

    总结:

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

  • 相关阅读:
    结对编程的理解
    第1章 python基础
    第 3 章 前端基础之JavaScript
    第1 章 mysql数据库之简单的DDL和DML sql语句
    第 1 章 前端之html
    第 13 章 python并发编程之io模型
    第 2 章 前端基础之CSS
    第 4 章 前端基础之jquery
    第 11 章 python线程与多线程
    注册表 SAM
  • 原文地址:https://www.cnblogs.com/dw-haung/p/Mybatis.html
Copyright © 2011-2022 走看看