JDBC-драйвер
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Драйвер JDBC — это программный компонент, позволяющий приложению Java взаимодействовать с базой данных . [1] Драйверы JDBC аналогичны драйверам ODBC , поставщикам данных ADO.NET и поставщикам OLE DB .
Для подключения к отдельным базам данных JDBC подключения к базе данных Java ( API ) требуются драйверы для каждой базы данных. Драйвер JDBC выдает соединение с базой данных и реализует протокол передачи запроса и результата между клиентом и базой данных.
Драйверы технологии JDBC относятся к одной из четырех категорий. [2]
- Мост JDBC-ODBC
- Драйвер собственного API
- Драйвер сетевого протокола ( драйвер промежуточного программного обеспечения )
- Драйвер протокола базы данных (драйвер Pure Java) или тонкий драйвер.
Драйвер типа 1 — мост JDBC-ODBC
[ редактировать ]Драйвер JDBC типа 1, также известный как мост JDBC-ODBC , представляет собой реализацию драйвера базы данных, которая использует драйвер ODBC для подключения к базе данных. Драйвер преобразует вызовы методов JDBC в вызовы функций ODBC.
Драйвер зависит от платформы, поскольку он использует ODBC, который, в свою очередь, зависит от собственных библиотек базовой системы, JVM операционной на которой работает . Кроме того, использование этого драйвера приводит к возникновению других зависимостей при установке; например, ODBC должен быть установлен на компьютере с драйвером, а база данных должна поддерживать драйвер ODBC. Использование этого драйвера не рекомендуется, если доступна альтернатива драйверу на чистом Java. Другой вывод заключается в том, что любое приложение, использующее драйвер типа 1, является непереносимым из-за привязки между драйвером и платформой. Эта технология не подходит для среды с большим количеством транзакций. Драйверы типа 1 также не поддерживают полный набор команд Java и ограничены функциональностью драйвера ODBC.
Sun (теперь Oracle) предоставила драйвер моста JDBC-ODBC: sun.jdbc.odbc.JdbcOdbcDriver
. Этот драйвер представляет собой собственный код, а не Java, и имеет закрытый исходный код. Мост JDBC-ODBC от Sun/Oracle был удален в Java 8 (доступны решения других поставщиков). [3] [4] [5] [6]
Если драйвер написан так, что его загрузка приводит к созданию экземпляра, а также вызывает DriverManager.registerDriver
с этим экземпляром в качестве параметра, он появится в списке драйверов DriverManager и будет доступен для создания соединения.
Иногда может случиться так, что более одного драйвера JDBC способны подключиться к данному URL-адресу . Например, при подключении к определенной удаленной базе данных можно использовать драйвер моста JDBC-ODBC, драйвер JDBC-to-generic network-protocol или драйвер, предоставленный поставщиком базы данных. В таких случаях порядок проверки драйверов имеет важное значение, поскольку DriverManager будет использовать первый найденный драйвер, который может успешно подключиться к данному URL-адресу.
Сначала DriverManager пытается использовать каждый драйвер в том порядке, в котором он был зарегистрирован. (Драйверы, перечисленные в jdbc.drivers, всегда регистрируются первыми.) Он пропустит все драйверы, являющиеся ненадежным кодом, если только они не были загружены из того же источника, что и код, пытающийся открыть соединение.
Он тестирует драйверы, по очереди вызывая метод Driver.connect для каждого из них, передавая им URL-адрес, который пользователь первоначально передал методу. DriverManager.getConnection
. Первый драйвер, распознавший URL-адрес, устанавливает соединение.
Преимущества
[ редактировать ]- Можно получить доступ практически к любой базе данных, для которой установлен драйвер ODBC, и получить данные.
Недостатки
[ редактировать ]- Накладные расходы на производительность, поскольку вызовы должны проходить через мост JDBC (подключение к базе данных Java) к драйверу ODBC (открытое подключение к базе данных), а затем к собственному интерфейсу подключения к базе данных (таким образом, может быть медленнее, чем другие типы драйверов).
- Драйвер ODBC необходимо установить на клиентском компьютере.
- Не подходит для апплетов , поскольку на клиенте необходимо установить драйвер ODBC.
- Определенные драйверы ODBC не всегда доступны на всех платформах; следовательно, переносимость этого драйвера ограничена.
- Нет поддержки со стороны JDK 1.8 (Java 8).
Драйвер типа 2 — драйвер Native-API.
[ редактировать ]Драйвер JDBC типа 2, также известный как драйвер Native-API , представляет собой реализацию драйвера базы данных, которая использует клиентские библиотеки базы данных. Драйвер преобразует вызовы методов JDBC в собственные вызовы API базы данных. Например: Драйвер Oracle OCI является драйвером типа 2.
Преимущества
[ редактировать ]- Поскольку реализация моста JDBC-ODBC отсутствует, он может быть значительно быстрее, чем драйвер типа 1.
Недостатки
[ редактировать ]- Клиентская библиотека поставщика должна быть установлена на клиентском компьютере.
- Не все базы данных имеют клиентскую библиотеку.
- Этот драйвер зависит от платформы.
- Этот драйвер поддерживает все приложения Java, кроме апплетов.
Драйвер типа 3 — драйвер сетевого протокола (драйвер промежуточного программного обеспечения)
[ редактировать ]Драйвер JDBC типа 3, также известный как драйвер Pure Java для промежуточного программного обеспечения базы данных, [7] — это реализация драйвера базы данных, которая использует промежуточный уровень между вызывающей программой и базой данных. Средний уровень ( сервер приложений ) прямо или косвенно преобразует вызовы JDBC , зависящий от поставщика в протокол базы данных .
Он отличается от драйвера типа 4 тем, что логика преобразования протокола находится не на клиенте, а на промежуточном уровне. Как и драйверы типа 4, драйвер типа 3 полностью написан на Java.
Один и тот же драйвер JDBC на стороне клиента может использоваться для нескольких баз данных. Это зависит от количества баз данных, для поддержки которых настроено промежуточное программное обеспечение. Драйвер типа 3 не зависит от платформы, поскольку различия, связанные с платформой, учитываются промежуточным программным обеспечением. Кроме того, использование промежуточного программного обеспечения обеспечивает дополнительные преимущества безопасности и доступа к брандмауэру.
Функции
[ редактировать ]- Отправляет вызовы API JDBC на сетевой сервер среднего уровня, который преобразует вызовы в сетевой протокол, специфичный для СУБД. Переведенные вызовы затем отправляются в конкретную СУБД.
- Применяется трехуровневый коммуникационный подход.
- Может взаимодействовать с несколькими базами данных – не зависит от поставщика.
- Драйвер клиента JDBC, написанный на Java, взаимодействует с промежуточным сетевым сервером, используя независимый от базы данных протокол, а затем этот сетевой сервер преобразует этот запрос в команды базы данных для этой базы данных.
- Таким образом, драйвер клиента для связи с промежуточным программным обеспечением не зависит от базы данных.
Преимущества
[ редактировать ]- Поскольку связь между клиентом и сервером промежуточного программного обеспечения не зависит от базы данных, на клиенте нет необходимости использовать библиотеку поставщика базы данных. Клиент не требует изменения для новой базы данных.
- Сервер промежуточного программного обеспечения (который может быть полноценным сервером приложений J2EE) может предоставлять типичные службы промежуточного программного обеспечения, такие как кэширование (соединений, результатов запросов и т. д.), балансировка нагрузки, ведение журнала и аудит.
- Один драйвер может обрабатывать любую базу данных, если ее поддерживает промежуточное программное обеспечение.
- Например: сервер IDA
Недостатки
[ редактировать ]- Требуется выполнить кодирование для конкретной базы данных на среднем уровне.
- Добавленный уровень промежуточного программного обеспечения может привести к дополнительной задержке, но обычно ее можно преодолеть за счет использования более совершенных сервисов промежуточного программного обеспечения.
Драйвер типа 4 — драйвер протокола базы данных/тонкий драйвер (драйвер Pure Java)
[ редактировать ]Драйвер JDBC типа 4, также известный как драйвер Direct to Database Pure Java , представляет собой реализацию драйвера базы данных, которая преобразует вызовы JDBC , зависящий от поставщика непосредственно в протокол базы данных .
полностью написанные на Java Драйверы типа 4, , не зависят от платформы . Они устанавливаются внутри виртуальной машины Java клиента. Это обеспечивает более высокую производительность, чем драйверы типа 1 и типа 2, поскольку не требует затрат на преобразование вызовов в вызовы ODBC или API базы данных. В отличие от драйверов типа 3, для работы не требуется соответствующее программное обеспечение.
Поскольку протокол базы данных зависит от поставщика, клиенту JDBC требуются отдельные драйверы, обычно поставляемые поставщиком, для подключения к различным типам баз данных.
Преимущества
[ редактировать ]- Полностью реализован на Java для достижения независимости от платформы.
- Эти драйверы не преобразуют запросы в промежуточный формат (например, ODBC).
- Клиентское приложение подключается напрямую к серверу базы данных. Никакие уровни трансляции или промежуточного программного обеспечения не используются, что повышает производительность.
- JVM может управлять всеми аспектами соединения приложения с базой данных; это может облегчить отладку.
Недостатки
[ редактировать ]- Драйверы зависят от конкретной базы данных, поскольку разные поставщики баз данных используют совершенно разные (и обычно собственные) сетевые протоколы.
См. также
[ редактировать ]- ADO.NET
- OLE БД
- Открытое подключение к базе данных (ODBC)
- XQJ (API XQuery для Java)
Ссылки
[ редактировать ]- ^ "Технологии Java SE - База данных"
- ^ Обзор Sun JDBC
- ^ Оракул. «Мост JDBC-ODBC» . Справочный центр Oracle . Проверено 27 июня 2015 г.
- ^ «Жизнь после sun.jdbc.odbc.JdbcOdbcDriver» . Блог о технологии универсального доступа к данным . Программное обеспечение OpenLink. 04.06.2015 . Проверено 18 ноября 2016 г.
Мост JDBC-to-ODBC, как в форме типа 1, так и в форме типа 3, доступен и регулярно обновляется с момента его первоначального выпуска для JDBC 1.
- ^ «Разъемы и драйверы моста SequeLink | Progress DataDirect» .
- ^ «Поддержка Java 8 ODBC» .
- ^ «Драйвер Pure Java для промежуточного программного обеспечения базы данных (об адаптерах базы данных)» .