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

    一.概述:

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

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

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

    二.设计模式:

    为什么要使用工厂模式

     

    数据源模块类图 :

    三.MyBatis源码数据源实现

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

    非连接池的数据连接:

    MyBatis数据库连接池源码解析

    数据结构如下:

     

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

     

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

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

    算法流程图:

    获取连接:

    释放连接:

    从连接池获取连接

     

     释放连接:

     

    总结:

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

  • 相关阅读:
    HTTP 返回状态代码详细解释
    丁一的作业
    getIntent().getExtras().clear()未清空Bundle的数据
    activity android:launchMode="singleTask" 没用重现启动activity的问题
    判断email格式
    判断网络是否可用
    修改系统语言
    生成UUID
    css reset file
    智能指针(auto_ptr)vc版
  • 原文地址:https://www.cnblogs.com/dw-haung/p/Mybatis.html
Copyright © 2011-2022 走看看