Зачем в JDBC подключать драйвер базы данных?

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

Ответ

JDBC (Java Database Connectivity) — это стандартный API, а не реализация. Чтобы приложение могло работать с конкретной СУБД (MySQL, PostgreSQL и т.д.), ему нужна реализация этого API — драйвер. Драйвер регистрируется в DriverManager и выполняет всю низкоуровневую работу.

Что делает драйвер в контексте JDBC:

  • Регистрация: Сообщает DriverManager, что доступно соединение с определенным типом БД (по URL, например, jdbc:mysql://).
  • Создание соединения: При вызове DriverManager.getConnection() подходящий драйвер устанавливает физическое сетевое соединение.
  • Адаптация: Преобразует стандартные JDBC-интерфейсы (Connection, PreparedStatement) в специфичные для СУБД команды и протоколы.

Современный подход (JDBC 4.0+): Драйверы, соответствующие спецификации JDBC 4.0 и выше, регистрируются автоматически через механизм SPI (Service Provider Interface). Достаточно добавить JAR-файл драйвера в classpath (например, через Maven/Gradle зависимость). Явный вызов Class.forName() больше не требуется.