Разница между номерами типов драйверов JDBC

Я заметил, что JDBC имеет разные драйверы, такие как:

  1. Тип 1 Драйвер
  2. Тип 2 Драйвер и т.д.. Тип 4

Почему они получили название типа 1, 2 и т. Д.? Есть ли логика?

6 ответов

Решение

Номер типа говорит о том, как драйвер фактически связывается с базой данных.

  1. Через ODBC API.
  2. Через специфичный API поставщика БД (используя вызовы JNI, например, файл DLL в Windows).
  3. Через общий сетевой протокол (с использованием сокетов, например, с протоколом TCP/IP).
  4. Через специальный сетевой протокол поставщика БД (все еще с сокетами).

В общем (просто по стечению обстоятельств), насколько выше номер типа, как лучше работает драйвер JDBC.

Я верю, что это восходит к оригинальному введению Sun (1997) в JDBC:

Драйверы JDBC, о которых мы знаем в настоящее время, обычно относятся к одной из четырех категорий:

  1. Мост JDBC-ODBC плюс драйвер ODBC. Продукт моста JavaSoft обеспечивает доступ к JDBC через драйверы ODBC. Обратите внимание, что двоичный код ODBC, а во многих случаях код клиента базы данных, должен быть загружен на каждом клиентском компьютере, который использует этот драйвер. В результате, этот тип драйвера наиболее подходит для корпоративной сети, где установка клиента не является серьезной проблемой, или для кода сервера приложений, написанного на Java в трехуровневой архитектуре.

  2. Драйвер Native-API частично-Java: этот тип драйвера преобразует вызовы JDBC в вызовы клиентского API для Oracle, Sybase, Informix, DB2 или других СУБД. Обратите внимание, что, как и драйвер моста, этот стиль драйвера требует загрузки некоторого двоичного кода на каждый клиентский компьютер.

  3. Драйвер JDBC-Net pure Java: этот драйвер преобразует вызовы JDBC в независимый от СУБД сетевой протокол, который затем транслируется сервером в протокол СУБД. Это промежуточное ПО сетевого сервера может подключать свои чистые Java-клиенты ко многим различным базам данных. Конкретный используемый протокол зависит от поставщика. В общем, это самая гибкая альтернатива JDBC. Вполне вероятно, что все поставщики этого решения предоставят продукты, пригодные для использования в интрасети. Чтобы эти продукты также поддерживали доступ к Интернету, они должны обрабатывать дополнительные требования к безопасности, доступ через брандмауэры и т. Д., Которые предъявляет Интернет.

  4. Драйвер чистого Java с собственным протоколом: этот тип драйвера преобразует вызовы JDBC в сетевой протокол, используемый непосредственно СУБД. Это позволяет осуществлять прямой вызов с клиентского компьютера на сервер СУБД и является отличным решением для доступа в интрасеть. Поскольку многие из этих протоколов являются проприетарными, сами поставщики баз данных будут основным источником. Несколько поставщиков баз данных имеют их в процессе.

Ожидается, что в конечном итоге категории драйверов 3 и 4 станут предпочтительным способом доступа к базам данных из JDBC. Категории драйверов 1 и 2 являются временными решениями, где прямые драйверы чистого Java еще не доступны. Существуют возможные варианты категорий 1 и 2 (не показаны в таблице ниже), для которых требуется соединитель, но это, как правило, менее желательные решения. Категории 3 и 4 предлагают все преимущества Java, включая автоматическую установку (например, загрузку драйвера JDBC с помощью апплета, который его использует).


Обратите внимание, что они на самом деле не называли их типами 1, 2, 3 и 4, а скорее мост JDBC-ODBC плюс драйвер ODBC, драйвер частично-Java для Native-API, драйвер чистой Java JDBC-Net и драйвер чистой Java Native-protocol, Каждое имя было полным, поэтому люди сразу стали ссылаться на них по номеру.

Цифры не очень информативны. Я считаю более полезным думать об этом в духе:

  • Локальный API (1,2) против сетевого протокола (3, 4)
  • Независимо от базы данных (нечетные числа) по сравнению с базой данных (четные числа)

Я никогда не мог вспомнить цифры, но когда кто-то сказал "мы используем драйвер типа 4 здесь", я мог задать два вопроса "да-нет", чтобы узнать, о чем они говорили.

Ссылка: Сравнение всех типов драйверов JDBC в табличном формате

1) Драйвер моста JDBC-ODBC: Этот драйвер также известен как Драйвер типа 1. Внутренне этот драйвер будет поддерживать драйвер ODBC для связи с базой данных. Драйвер типа 1 преобразует вызовы JDBC в вызовы ODBC, а драйвер ODBC преобразует вызовы ODBC в вызовы, специфичные для базы данных.

2) Собственный драйвер API: Собственный драйвер API преобразует вызовы JDBC в вызовы родных библиотек, специфичные для базы данных, и эти вызовы непосредственно понимаются ядром базы данных.

3) Драйвер сетевого протокола: Java-приложение связывается с драйвером сетевого протокола. Драйвер сетевого протокола преобразует вызовы JDBC в вызовы среднего уровня, сервер среднего уровня обменивается данными с базой данных, сервер среднего уровня преобразует специальные вызовы среднего уровня в вызовы конкретных баз данных.

4) Чистый драйвер Java: он также известен как тонкий драйвер. Тонкий драйвер преобразует вызовы JDBC в вызовы, специфичные для базы данных. Тонкий драйвер напрямую связывается с базой данных, используя собственный протокол базы данных, предоставляемый поставщиком базы данных.

http://en.wikipedia.org/wiki/JDBC_driver

Кажется, нет никакой логики, просто лень, я думаю!

ОБНОВЛЕНИЕ: вопрос был в том, была ли какая-то логика для вызова типа 1, типа 2 и т. Д. Вместо вызова типа apple, типа оранжевый:). Я понимаю, что типы драйверов различны и работают / не работают в зависимости от обстоятельств, но почему имя "Тип 1" вместо "Тип JDBC-ODBC" или "Тип JO" не имеет смысла AFAIK.

Короче говоря, каждый тип использует свою стратегию и лучше работает для разных типов реализаций. Я не думаю, что это была лень. Я думаю, что было бы легче более легко и четко выбрать, какой тип лучше всего подходит для вашей конкретной ситуации.

Другие вопросы по тегам