目录
在数据持久层,数据源和事务是两个非常重要的组件,对数据持久层的影响很大,在实际开发中,一般会使用Mybatis集成第三方数据源组件,如c3p0、Druid等,Mybatis也提供了自己的数据库连接池实现,本文会通过Mybatis的源码实现来了解数据库连接池的设计。事务方面,一般使用 Spring进行事务的管理,这里不做详细分析。下面我们看一下Mybatis是如何对这两部分进行封装的。
DataSource
常见的数据源都会实现javax.sql.DataSource接口,Mybatis中提供了两个该接口的实现类,分别是PooledDataSource和UnpooledDataSource,使用不同的工厂类分别管理这两个类的对象。
DataSourceFactory
DataSourceFactory系列类的设计比较简单,DataSourceFactory作为顶级接口,UnpooledDataSourceFactory实现了该接口,PooledDataSourceFactory又继承了 UnpooledDataSourceFactory。
public interface DataSourceFactory {
// 设置 DataSource 的属性,一般紧跟在 DataSource 初始化之后
void setProperties(Properties props);
// 获取 DataSource对象
DataSo
本文探讨了MyBatis中DataSource和Transaction的重要角色。MyBatis提供了PooledDataSource和UnpooledDataSource实现,前者实现了简单的数据库连接池功能,依赖UnpooledDataSource创建连接。PooledConnection管理数据库连接,PoolState维护连接状态。对于事务,Mybatis有JdbcTransaction和ManagedTransaction两种实现,但通常结合Spring进行事务管理。
订阅专栏 解锁全文
1315






