MyBatis 数据源(DataSource)深度解析:从原理到实践(Unpooled/Pooled 与第三方连接池)
MyBatis 的数据源(DataSource)是连接数据库的核心组件,负责管理数据库连接的创建、复用与销毁,直接影响系统的性能与稳定性。系统梳理 MyBatis 内置数据源的实现原理、连接池机制,以及生产环境中主流第三方连接池(HikariCP、Druid)的整合方案,帮助你理解 “连接管理” 的本质并选择合适的数据源。
数据源核心概念与接口规范
在深入 MyBatis 实现前,需先明确数据源的通用规范 —— 所有数据源都遵循 JDBC 标准接口 javax.sql.DataSource,该接口定义了获取数据库连接的核心方法:
1 | public interface DataSource { |
MyBatis 对数据源的封装遵循 “工厂模式”:通过 DataSourceFactory 接口创建不同类型的 DataSource,核心实现如下:
| 组件 | 作用 | MyBatis 内置实现 |
|---|---|---|
DataSource |
管理数据库连接 | UnpooledDataSource(无池)、PooledDataSource(有池) |
DataSourceFactory |
创建 DataSource 的工厂接口 |
UnpooledDataSourceFactory、PooledDataSourceFactory |
MyBatis 内置数据源:UnpooledDataSource(无池实现)
UnpooledDataSource 是 MyBatis 最简单的数据源实现,每次获取连接都会创建新的 Connection 对象,不进行连接复用,适合简单测试场景,不推荐生产环境使用。