JDBC(Java DataBase Connectivity)定义了连接数据库的规范。使用JDBC操作数据源主要步骤是:
- 与数据源建立连接
- 执行SQL语句
- 检索SQL执行结果
- 关闭连接
DriverManager获取Connection
在JDBC1.0版本中,定义了DriverManager管理并获取驱动连接:
Class.forName("com.mysql.jdbc.Driver") // ①
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName","userName","password")
①:代码显式地加载驱动,此类通过父类继承了java.sql.Driver,提供了静态方法向DriverManager注册了mysql驱动,如下:
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
但是这种方法需要硬编码,不利于移植和变更驱动,于是在JDBC4.0版本利用SPI(Service Provider Interface)服务提供发现机制进行了优化。
符合4.0版本的驱动都会在META-INF/services/Driver文件中指定驱动类的完全限定名,例如mysql-connector-java.jar包这个文件内容是com.mysql.cj.jdbc.Driver,通过SPI的ServiceLoader.load(Driver.class)能加载文件内容中的实现类
DataSource获取Connection
JDBC2.0版本扩展包提供了javax.sql.DataSource,是一种比较推荐的获取数据源的方式。此扩展包主要的接口有DataSource,PooledConnection,RowSet,XADataSource,XAConnection。规范了连接池,返回结果集,分布式连接等。获取Connection代码如下:

DataSource获取Connection
其中利用JNDI(Java Naming and Directory Interface)API绑定DataSource名称和对象的,java仅仅提供JNDI的规范,具体实现需要使用方实现,以下例子用的是apache实现的。

apache实现的JNDI查找DataSource例子