框架原理与源码解析: MyBatis_No3数据源与连接池

对于ORM框架而言,数据源的组织非常重要,直接影响到框架的性能

数据源与连接池

任务:分析MyBatis框架的数据源结构,解析MyBatis的连接池。

##首先,MyBatis的数据源的分类

##然后,数据源是如何加载和使用

##最后,分类介绍UNPOOLED、POOLED和JNDI类型的数据源组织。 [  重点POOLED类型的数据源和其实现的连接池原理 ]

目录

  • 一MyBatis数据源DataSource分类
  • 二DataSource数据源的创建过程
  • 三DataSource数据源的创建Connection
  • 四UnpooledDataSource无连接池数据源
  • 五连接池的使用原因?场景?
  • 六PooledDataSource    连接池数据源

https://blog.csdn.net/luanlouis/article/details/37671851

一、MyBatis数据源DataSource分类

四个包:

# org.apache.ibatis.datasoruce

# org.apache.ibatis.datasoruce.jndi             JNDI实现数据源    JNDI         

扫描二维码关注公众号,回复: 3089292 查看本文章

# org.apache.ibatis.datasoruce.pooled        连接池数据源        POOLED

# org.apache.ibatis.datasoruce.unpooled    无连接池数据源    UNPOOLED

三种数据源: UNPOOLED、POOLED、JNDI      

①MyBatis内部分别定义,实现了java.sql.DataSource接口的UnpooledDataSource,PooledDataSource类

          来表示UNPOOLED、POOLED类型的数据源   

   接口    : DataSource

   实现类:UnPooledDataSource        

                 PooledDataSource  引用UnPooledDataSource、提供缓存连接池机制、通过UnPooledDataSource创建Connection 

②JNDI类型的数据源DataSource,则是通过JNDI上下文中取值

二、数据源DataSource的创建过程

MyBatis数据源DataSource对象的创建发生在MyBatis初始化的过程中。

第一步,

第二步,

第三步,

三、
 
四、无连接池数据源UnpooledDataSource
 
五、
 
六、连接池数据源PooledDataSource
 

七、JNDI类型的数据源DataSource

MyBatis定义了一个JndiDataSourceFactory工厂来创建通过JNDI形式生成的DataSource。

源码分析:

七、JNDI类型的数据源DataSource

if (properties.containsKey(INITIAL_CONTEXT)
        && properties.containsKey(DATA_SOURCE))
{
    //从JNDI上下文中找到DataSource并返回
    Context ctx = (Context) initCtx.lookup(properties.getProperty(INITIAL_CONTEXT));
    dataSource = (DataSource) ctx.lookup(properties.getProperty(DATA_SOURCE));
}
else if (properties.containsKey(DATA_SOURCE))
{
    // //从JNDI上下文中找到DataSource并返回
    dataSource = (DataSource) initCtx.lookup(properties.getProperty(DATA_SOURCE));
}

高级问题:框架的性能问题??

猜你喜欢

转载自blog.csdn.net/ddhmbbklyk2018/article/details/82499812