一 DataSource
在数据持久层中,数据源是一个非常重要的组件,其性能直接关系整个数据持久层的性能。常见的第三方数据源组件有DBCP,C3P0,Proxool等。MyBatis 不仅可以集成第三方数据源组件,还提供自己的数据源实现。
MyBatis 使用不同的DataSourceFactory 接口实现创建不同类型的DataSource。
DataSourceFactory 类图如下
DataSourceFactory 接口扮演抽象工厂角色,UnpooledDataSourceFactory 和 PooledDataSourceFactory则扮演具体工厂角色。
DataSourceFactory 的源码如下
package org.apache.ibatis.datasource; import java.util.Properties; import javax.sql.DataSource; /** * @author Clinton Begin */ public interface DataSourceFactory { // 设置dataSource 的相关属性 void setProperties(Properties props); // 获取DataSource 对象 DataSource getDataSource(); }
看一下 UnpooledDataSourceFactory
通过工厂方式获取数据源对象
// 通过工厂方式 获取 UnpooledDataSource 对象 DataSourceFactory unpooledDataSourceFactory = new UnpooledDataSourceFactory(); DataSource unpooledDataSource = unpooledDataSourceFactory.getDataSource(); // 通过工厂方式 获取 PooledDataSource 对象 DataSourceFactory pooledDataSourceFactory = new PooledDataSourceFactory(); DataSource pooledDataSource = pooledDataSourceFactory.getDataSource();