JDBC (Java Database Connectivity) — это API, который позволяет Java-приложениям взаимодействовать с различными типами баз данных. Существует четыре основных типа драйверов JDBC, различающихся по способу взаимодействия с базой данных:
-
Тип 1: JDBC-ODBC Bridge driver
- Преобразует вызовы JDBC в вызовы ODBC (Open Database Connectivity).
- Требует установки ODBC-драйвера для конкретной базы данных.
- Производительность низкая из-за двух уровней преобразования.
- Устарел, не рекомендуется к использованию.
-
Тип 2: Native-API driver (частично Java driver)
- Преобразует вызовы JDBC в вызовы native-API конкретной базы данных (например, библиотеки C/C++).
- Требует установки native-библиотек на клиентской машине.
- Производительность лучше, чем у Типа 1, но зависим от платформы и базы данных.
-
Тип 3: Network Protocol driver (All-Java driver)
- Использует промежуточный сервер приложений (middleware server).
- Преобразует вызовы JDBC в сетевой протокол, который middleware server преобразует в вызовы специфичные для базы данных.
- Полностью написан на Java, поэтому платформонезависим.
- Гибкий, может работать с различными базами данных через middleware.
- Требует настройки и управления middleware server.
-
Тип 4: Thin driver (All-Java driver)
- Преобразует вызовы JDBC непосредственно в сетевой протокол базы данных.
- Написан полностью на Java, поэтому платформонезависим.
- Наиболее распространенный и производительный тип драйвера, так как нет промежуточных слоев.
- Требует знания специфического сетевого протокола базы данных.
Основные различия можно свести к таблице:
| Характеристика | Тип 1 (JDBC-ODBC Bridge) | Тип 2 (Native-API) | Тип 3 (Network Protocol) | Тип 4 (Thin) |
|---|
| Java код | Нет (часть) | Частично | Полностью | Полностью |
| Требует нативной либы | Да (ODBC) | Да | Нет | Нет |
| Middleware | Нет | Нет | Да | Нет |
| Производительность | Низкая | Средняя | Средняя/Хорошая | Наилучшая |
| Платформонезависимость | Нет | Нет | Да | Да |
| Сложность настройки | Высокая | Средняя | Высокая | Низкая |
В современных Java-прижениях наиболее часто используется Тип 4 из-за его производительности, простоты использования и платформонезависимости.