JDBC — это спецификация или реализация?

«JDBC — это спецификация или реализация?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JDBC (Java Database Connectivity) — это спецификация (API), а не готовая реализация.

  • JDBC API: Набор интерфейсов, определенных в пакетах java.sql и javax.sql (например, Driver, Connection, Statement, ResultSet). Он описывает, как Java-приложение должно взаимодействовать с любой реляционной СУБД.
  • Реализация (драйвер): Конкретный JAR-файл, предоставляемый вендором СУБД (Oracle, MySQL, PostgreSQL). Этот драйвер реализует интерфейсы JDBC для своей конкретной базы данных.

Пример работы:

// 1. Загрузка драйвера (специфическая реализация для MySQL)
Class.forName("com.mysql.cj.jdbc.Driver");

// 2. Получение соединения через стандартный интерфейс JDBC `DriverManager`
Connection conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/mydb", // URL, специфичный для драйвера
    "user",
    "password"
);

// 3. Использование стандартных интерфейсов JDBC
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, name FROM users");

while (rs.next()) {
    // Работа через стандартные методы JDBC API
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println(id + ": " + name);
}

Это разделение позволяет писать код, не зависящий от конкретной базы данных.