Разница между номерами типов драйверов JDBC - PullRequest
19 голосов
/ 04 марта 2010

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

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

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

Ответы [ 5 ]

22 голосов
/ 04 марта 2010

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

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

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

10 голосов
/ 05 марта 2010

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

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

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

  2. Драйвер частично-Java для Native API: этот тип драйвера преобразует 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 , Каждое имя было полным, поэтому люди сразу стали ссылаться на них по номеру.

4 голосов
/ 04 марта 2010

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

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

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

0 голосов
/ 04 марта 2010

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

0 голосов
/ 04 марта 2010

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

Кажется, это не логика, просто лень, наверное!

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

...