Что такое тип 1,2,3 или 4 драйвера JDBC?
Чтобы подключиться к базе данных с помощью Java, большинство из нас использует JDBC API.
Обычно мы включаем драйвер, например ojdbc14
(предназначен для Java 1.4) в пути к классу, а в программе мы используем Class.forName
для его использования.
В отличие от большинства других банок импорт не из ojdbc14, они из java.sql
, который находится в rt.jar
. Итак, какой тип драйвера (1,2,3,4) используется для каждого из них?
Ответы
Ответ 1
вы используете интерфейс jdbc из классов java.sql, поэтому тип драйвера не будет иметь никакого логического воздействия в вашем коде, он будет иметь только время выполнения/развертывание.
Вы также используете ojdb14.jar от Oracle, возможно, с "тонкой" конфигурацией jdbc, что означает, что вы используете конфигурацию драйвера типа 4. При такой конфигурации вам нужно будет развернуть JAR файл JDBC с помощью вашей программы доступа к базе данных.
Другие варианты включают мост JDBC, что на самом деле означает соединение ODBC, завернутое в одежду JDBC. Это означает, что вам нужно будет настроить вашу систему на правильную функцию ODBC, а затем использовать JAR файл для доступа к ODBC. Из-за дополнительного "перескока" данных через ODBC можно ожидать, что он будет немного медленнее, чем доступ типа 4; однако существует вероятность того, что ODBC оптимизирован в такой значительной степени для конкретной ситуации, что дополнительный прыжок незначителен. Как и при большинстве проблем с производительностью, истина обнаруживается путем тестирования (в вашей среде).
Драйверы типа 2 снова используют API Java (JDBC); однако они соединяют вызовы с разделяемой библиотекой стиля C или С++, которая затем обрабатывает реальное соединение. Если драйвер оптимизирован настолько быстро, что вызовы JNI для установки/разрыва незначительны по стоимости, возможно, он может опередить драйверы типа 4.
Драйверы типа 3 в основном прокси (или ретранслируют) запрос на другой сетевой ресурс. Это обычно приводит к дополнительному сетевому удару, но опять же, это не говорит о фактической производительности.
Драйверы типа 4 - это те, которые вы, вероятно, захотите придерживаться. Программа Java напрямую подключается к базе данных, а это означает, что если есть проблема, она будет полностью захвачена в JVM программы, создающей соединение (тип 1, он на уровне ODBC, тип 2 - в собственном скомпилированном коде, введите 3 в удаленном сетевом прокси).
Опять же, это не связано с функциональностью; однако все они влияют на развертывание, отладку и настройку подключения к базе данных.
Ответ 2
"Тип" относится к тому, как драйвер реализует API. Четыре типа:
Тип 1: Драйвер моста JDBC-ODBC Bridge (Bridge)
Тип 2: драйвер Native-API/частично Java (родной)
Тип 3: драйвер AllJava/Net-protocol (промежуточное ПО)
Тип 4: Все драйвер Java/Native-protocol (Pure)
У них будут разные характеристики производительности. Подробнее см. Ссылку .
Ответ 3
+------+---------------------------------+-------------------------------------------------------------------------------------------+
| Type | Driver | Descripiton |
+------+---------------------------------+-------------------------------------------------------------------------------------------+
| 1 | JDBC-ODBC Bridge (bridge) | Translates all JDBC calls into ODBC calls. |
| 2 | Native API (native) | Translates all JDBC calls into native API database calls. (e.g: DLL on windows using JNI) |
| 3 | Network Protocol(middleware) | Translates all JDBC calls into database independent middleware specific calls. |
| 4 | Native Protocol(pure java thin) | Translates all JDBC calls directly into database calls. |
+------+---------------------------------+-------------------------------------------------------------------------------------------+
Ответ 4
ojdbc14.jar
: Предоставляет драйвер jdbc, который поможет вам подключиться к БД.
java.sql.*
: предоставляет вам apis для запроса данных в БД и требует подключения к БД, чтобы сделать то, что помогает драйвер.
SO, у них есть разные роли для игры, и оба они необходимы для общения с базой данных.
Приходит к типу драйверов, и его различные способы взаимодействия с БД, которые классифицируют их, но в конечном итоге нацелены, - это то же самое, что и для подключения к БД.
Здесь подробно описываются типы драйверов: http://en.wikipedia.org/wiki/JDBC_driver
Ответ 5
Проще говоря
Тип 1: (драйвер моста JDBC-ODBC)
→ он использует ODBC
→ преобразует вызовы JDBC в вызовы ODBC
→ его недостатки в том, что вам нужно установить ODBC или вы можете сказать, что это зависит от ODBC (предоставлено Microsoft)
→ его производительность низкая, потому что он преобразует вызовы JDBC в вызовы ODBC
Type2 (собственный API)
→ использует клиентские библиотеки базы данных
→ конвертирует вызовы JDBC в собственные вызовы базы данных Api
→ дает лучшую производительность, чем JDBC-ODBC (Type1), потому что он не зависит или не использует ODBC
Тип 3 (сетевой протокол)
→ он использует сервер приложений (Middleware)
→ сервер преобразует вызовы jdbc в протокол базы данных конкретного поставщика
→ Требуется поддержка сети на стороне клиента
→ Обслуживание драйвера сетевого протокола становится дорогостоящим
Type4 (тонкий)
→ напрямую взаимодействует с базой данных
→ не требует никаких библиотек
→ написано поставщиками баз данных, поэтому их лучше всего использовать