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

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

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

Почему они получили имя типа Type 1, Type 2 и т.д.? Есть ли логика?

Ответы

Ответ 1

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

  • Через API ODBC.
  • Через API-интерфейс поставщика DB (используя JNI вызывает, например, файл DLL в Windows).
  • Через общий сетевой протокол (используя sockets с помощью протокола TCP/IP).
  • Через сетевой протокол поставщика DB (все еще с сокетами).

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

Ответ 2

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

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

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

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

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

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

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


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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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