1.Mybatis ,数据库连接池 和 JDBC事务工厂的关系

1)Mybatis和JDBC

  • Mybatis是一个优秀的持久层框架,底层基于JDBC实现与数据库的交互
  • 并在JDBC操作的基础上做了封装和优化,它借助灵活的SQL定制参数及结果集的映射方式,更好的适应了当前互联网技术的发展。
  • Mybatis框架的简单应用架构如图所示

2)Druid-数据库连接池

(1)Druid解决什么问题?

  • Druid主要解决的问题就是传统数据库无法解决的大数据量查询性能的问题
  • 本质就是一个分布式支持实时数据分析的数据存储系统

(2) Druid适合的场景:

  • 查询多修改很少
  • 查询以聚合或分组为主
  • 快速查询
  • 需要支持离线和实时的数据源
  • 能够快速的实现查询与数据分析,高可用,高扩展能力。
  • Druid是数据库连接池,功能、性能、扩展性方面都算不错。最大的亮点是为监控而生的数据库连接池

3) 数据库、数据源、数据库连接池、JDBC、JDBC实现是什么关系?

Druid与MySQL版本的关系 mybatis和druid的区别_Druid与MySQL版本的关系

4)数据源连接池和JDBC事务工厂操作的关系

Druid与MySQL版本的关系 mybatis和druid的区别_java_02

  • 建立数据源连接池JDBC事务工厂操作,并以xml配置数据源信息为入口,在XMLConfigBuilder中添加数据源解析和构建操作,在配置类配置中添加JDBC运行环境信息。
  • 为了在DefaultSqlSession中完成对JDBC执行SQL的操作
  • 解析parse中的XML DB链接配置信息,完成事务工厂和连接池的注册环境到配置类
  • 不再打印SQL语句,而是将SQL语句放入DB连接池中执行,完成简单的结果封装。

2. Spring如何整合MyBatis和druid

Druid与MySQL版本的关系 mybatis和druid的区别_数据源_03


Druid与MySQL版本的关系 mybatis和druid的区别_Druid与MySQL版本的关系_04

  1. spring底层读取配置文件基于配置文件创建DataSource
  2. 创建sqlSessionFacotryBean
  3. 通过sqlSessionFactoryBean对象创建SqlSessionFactory,其实创建的对象是DefaultSqiSessionFactory
  4. DruidDataSource注入给sqlSessionFacotryBean
  5. 外界获取的是SqlSessionFactory,但实际创建的是DeafultSqlSessionFactory,外界测试类获取的是接口,但是实际运行时的对象是DeafultSqlSessionFactory。至少对外界提供SqlSessionFactory对象,才能通过它去opesesssion,通过sqlSession访问数据库