DriverManager
DriverManager 类是用来管理一组JDBC驱动程序的,它通过使用这些驱动程序与数据库建立连接。
Class.forName("com.mysql.cj.jdbc.Driver");
这条语句会让MySQL JDBC驱动程序被加载到内存中。驱动程序类在加载时会自动注册自己到DriverManager中。(驱动程序一旦被加载,就会通过DriverManager.registerDriver方法注册到DriverManager中)
一旦驱动程序被注册,应用程序就可以通过DriverManager获取数据库连接。例如:
Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mydatabase", "user", "password");
数据库连接池通常都需要实现 javax.sql.DataSource 接口
//使用HikariDataSource
public class DatabaseConnectionPool {
private static HikariDataSource dataSource;
static {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase");
config.setUsername("username");
config.setPassword("password");
config.setMaximumPoolSize(10);
config.setMinimumIdle(5);
config.setIdleTimeout(30000);
config.setConnectionTimeout(30000);
config.setMaxLifetime(1800000);
dataSource = new HikariDataSource(config);
}
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
public static DataSource getDataSource() {
return hikariDataSource;
}
}
DataSource依赖于底层连接池,连接池依赖于DriverManager
虽然DataSource和DriverManager最终都会提供数据库连接,但它们的实现机制有所不同:
DriverManager:直接通过驱动类管理数据库连接。
DataSource:通常会委托给底层的连接池实现(如Apache DBCP、C3P0、HikariCP等)来管理连接。这些连接池实现会内部使用DriverManager或其他方式来创建实际的数据库连接。
ResultSet
ResultSet 代表一个查询结果的集合,可以包含多行数据。
通过光标移动方法可以逐行访问数据。
支持通过列名或列索引获取数据。