1.Mybatis ,数据库连接池 和 JDBC事务工厂的关系
1)Mybatis和JDBC
- Mybatis是一个优秀的持久层框架,
底层基于JDBC实现与数据库的交互
。 - 并在
JDBC操作的基础上做了封装和优化
,它借助灵活的SQL定制
,参数及结果集的映射方式
,更好的适应了当前互联网技术的发展。 - Mybatis框架的简单应用架构如图所示:
2)Druid-数据库连接池
(1)Druid解决什么问题?
- Druid主要解决的问题就是
传统数据库无法解决的大数据量查询性能的问题
。 - 本质就是
一个分布式支持实时数据分析的数据存储系统
。
(2) Druid适合的场景:
- 查询多修改很少
- 查询以聚合或分组为主
快速查询
- 需要支持离线和实时的数据源
能够快速的实现查询与数据分析,高可用,高扩展能力。
- Druid是数据库连接池,功能、性能、扩展性方面都算不错。最大的亮点是
为监控而生的数据库连接池
。
3) 数据库、数据源、数据库连接池、JDBC、JDBC实现是什么关系?
4)数据源连接池和JDBC事务工厂操作的关系
- 建立
数据源连接池
和JDBC事务工厂
操作,并以xml配置数据源信息为入口
,在XMLConfigBuilder
中添加数据源解析和构建操作,在配置类配置中添加JDBC
运行环境信息。 - 为了在
DefaultSqlSession
中完成对JDBC执行SQL的操作
。 - 解析parse中的
XML DB
链接配置信息,完成事务工厂和连接池的注册环境到配置类
。 - 不再打印SQL语句,而是将SQL语句放入DB连接池中执行,完成简单的结果封装。
2. Spring如何整合MyBatis和druid
- spring
底层读取配置文件
,基于配置文件创建DataSource
- 创建
sqlSessionFacotryBean
- 通过
sqlSessionFactoryBean
对象创建SqlSessionFactory
,其实创建的对象是DefaultSqiSessionFactory
- 把
DruidDataSource注入给sqlSessionFacotryBean
- 外界获取的是
SqlSessionFactory
,但实际创建的是DeafultSqlSessionFactory
,外界测试类获取的是接口,但是实际运行时的对象是DeafultSqlSessionFactory。至少对外界提供SqlSessionFactory对象,才能通过它去opesesssion,通过sqlSession
去访问数据库
。