Разница между номерами драйверов 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
Короче говоря, каждый тип использует другую стратегию и лучше работает для разных типов реализаций. Я не думаю, что это была лень. Я думаю, что это должно было облегчить и четко определить, какой тип лучше всего подходит для вашей конкретной ситуации.