在數據持久層中,數據源是一個很是重要的組件,其性能直接關係整個數據持久層的性能。常見的第三方數據源組件有DBCP,C3P0,Proxool等。MyBatis 不只能夠集成第三方數據源組件,還提供本身的數據源實現。java
MyBatis 使用不一樣的DataSourceFactory 接口實現建立不一樣類型的DataSource。sql
DataSourceFactory 類圖以下apache
DataSourceFactory 接口扮演抽象工廠角色,UnpooledDataSourceFactory 和 PooledDataSourceFactory則扮演具體工廠角色。性能
DataSourceFactory 的源碼以下spa
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();