Подтвердить что ты не робот

Что такое тип 1,2,3 или 4 драйвера JDBC?

Чтобы подключиться к базе данных с помощью Java, большинство из нас использует JDBC API.

Обычно мы включаем драйвер, например ojdbc14 (предназначен для Java 1.4) в пути к классу, а в программе мы используем Class.forName для его использования.

В отличие от большинства других банок импорт не из ojdbc14, они из java.sql, который находится в rt.jar. Итак, какой тип драйвера (1,2,3,4) используется для каждого из них?

4b9b3361

Ответ 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 (тонкий)

→ напрямую взаимодействует с базой данных

→ не требует никаких библиотек

→ написано поставщиками баз данных, поэтому их лучше всего использовать