JDBC2.0在1.0版本java.sql.*上增加了一个扩展包javax.sql.*包,这个包里面包含两个接口:
1.DataSource,数据源。
2.ConnectionPoolDataSource,数据池。
DataSource的源码可以看到,这个接口的作用就是拿来获取connection连接的。
各个数据库厂商只负责实现connection,
至于获取connection,在JDBC1.0里面是由DriverManager来负责的。
JDBC2.0版本之所新增DataSource,原因很简单——数据库连接池。1.0版本时每用一次connection都需要重新new,而dataSource可以缓存connection。
打开mybatis的源码可以看到有连接池。
实现DataSource的地方很多:
1,DBCP框架
dbcp框架中的DataSource类是:org.apache.commons.dbcp.BasicDataSource
这是commons-dbcp.jar包中的类。
2,C3P0框架
c3p0框架的DataSource类是:com.mchange.v2.c3p0.ComboPooledDataSource
这是c3p0.jar包中的类。
3,MyBatis框架
MyBatis框架的DataSource类是:org.apache.ibatis.datasource.pooled.PooledDataSource
这是mybatis.jar包中的类。
4,Druid框架
Druid框架的DataSource类是:com.alibaba.druid.pool.DruidDataSource
由于都是实现的DataSource接口,所以可以相互切换。