DataSource是什么

mysql

记录一下

概述

在 java 中操作数据库有很多方式,在众多方式中除了 JDBC 外都有 DataSource 对象。
DataSource 可以看作数据库,它封装了数据库修改、连接数据库,程序中操作 DataSource 对象即可对数据库进行增删改查操作。

不同方式中使用的 DataSource 对象不同,主要如下:

DBCP 框架

dbcp 框架中的 DataSource 类是: org.apache.commons.dbcp.BasicDataSource, 这是 commons-dbcp.jar 包中的类。

C3P0 框架

c3p0 框架的 DataSource 类是: com.mchange.v2.c3p0.ComboPooledDataSource, 这是 c3p0.jar 包中的类。

MyBatis 框架

MyBatis 框架的 DataSource 类是:org.apache.ibatis.datasource.pooled.PooledDataSource, 这是 mybatis.jar 包中的类。

Druid 框架

Druid 框架的 DataSource类是:com.alibaba.druid.pool.DruidDataSource, 这是 druid.jar 包中的类。

值得注意的是:

  • 以上框架中的 DataSource 虽然类不同,但可以混合使用,即在 MyBatis 框架中可以使用 DBCP 中的 DataSource 类,也可以使用 Druid 框架中的 DataSource类。
  • Druid 并不是一个独立操作数据库的框架,它只提供了 DataSource,必须与其他框架配合使用。
  • 之所有这些 DataSource 对象可以通过,是因为他们都实现了同一个接口:javax.sql.DataSource。实现 DataSource 接口必须重写 getConnection 方法,就可以获得 Connection 对象,有了 Connection 对象即可以对数据库进行操作。
  • 以上连接池的 DBCP 是利用包装类来实现的,而 C3PO 是动态代理实现的。

参考文章

Java操作数据库方式(六)DataSource详解