Сколько типов драйверов баз данных различают в jdbc
Перейти к содержимому

Сколько типов драйверов баз данных различают в jdbc

  • автор:

Что такое JDBC-драйвер? Какие бывают типы?

JDBC – Java DataBase Connectivity – соединение с базами данных на Java. Это стандарт взаимодействия с БД. Его интерфейс поставляется в стандартной JDK в виде пакета java.sql . Какой бы библиотекой для работы с базой данных вы ни пользовались, в ее основе почти всегда лежит низкоуровневый JDBC.

JDBC-драйвер – реализация JDBC для определенной базы данных. В приложении может быть зарегистрировано несколько разных драйверов. При соединении к базе, нужный выбирается исходя из URL соединения. Например, для jdbc:mysql://localhost:3306/db_name будет использован MySQL JDBC драйвер (при наличии). Драйверы делятся на 4 типа:

Тип 1 – JDBC-ODBC мост. Делегирует работу с базой установленному в системе ODBC-драйверу. Платформозависимый. Не поддерживается с Java 8.

Тип 2 – Native API. Делегирует работу с базой библиотеке, установленной в системе. Платформозависимый. Библиотеки в отличие от ODBC специфичны для конкретной базы, поэтому такой драйвер обычно работает быстрее.

Тип 3 – драйвер сетевого протокола. Работает с промежуточным слоем (JavaEE сервером приложений), который транслирует запросы в сетевой протокол, с которым работает конкретная БД. Такой драйвер полностью реализован на Java.

Тип 4 – драйвер протокола БД/тонкий драйвер. Полная реализация протокола взаимодействия с базой данных. Отличается от типа 3 тем, что здесь логика протокола находится не на внешнем промежуточном слое, а прямо в самом драйвере.

JDBC — Типы драйверов

Драйверы JDBC реализуют определенные интерфейсы в API JDBC для взаимодействия с вашим сервером базы данных.

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

Пакет Java.sql , который поставляется с JDK, содержит различные классы с определенным поведением и их фактические реализации выполняются в сторонних драйверах. Сторонние поставщики реализуют интерфейс java.sql.Driver в своем драйвере базы данных.

Типы драйверов JDBC

Реализации драйвера JDBC различаются из-за большого разнообразия операционных систем и аппаратных платформ, в которых работает Java. Sun поделила типы реализации на четыре категории: типы 1, 2, 3 и 4, что объясняется ниже:

Тип 1: драйвер моста JDBC-ODBC

В драйвере типа 1 мост JDBC используется для доступа к драйверам ODBC, установленным на каждом клиентском компьютере. Использование ODBC требует настройки в вашей системе имени источника данных (DSN), которое представляет целевую базу данных.

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

СУБД Тип драйвера 1

JDBC-ODBC Bridge, поставляемый с JDK 1.2, является хорошим примером такого типа драйвера.

Тип 2: JDBC-собственный API

В драйвере типа 2 вызовы API JDBC преобразуются в собственные вызовы API C / C ++, которые являются уникальными для базы данных. Эти драйверы обычно предоставляются поставщиками баз данных и используются так же, как мост JDBC-ODBC. Драйвер для конкретного поставщика должен быть установлен на каждом клиентском компьютере.

Если мы изменим базу данных, нам придется изменить собственный API, поскольку он специфичен для базы данных, и в настоящее время они в основном устарели, но вы можете заметить некоторое увеличение скорости с драйвером типа 2, потому что это устраняет накладные расходы ODBC.

СУБД Тип драйвера 2

Драйвер Oracle Call Interface (OCI) является примером драйвера типа 2.

Тип 3: JDBC-Net чистая Java

В драйвере типа 3 для доступа к базам данных используется трехуровневый подход. Клиенты JDBC используют стандартные сетевые сокеты для связи с сервером приложений промежуточного программного обеспечения. Затем информация о сокете преобразуется сервером приложений промежуточного программного обеспечения в формат вызова, требуемый СУБД, и пересылается на сервер базы данных.

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

СУБД Тип драйвера 3

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

Ваш сервер приложений может использовать драйвер типа 1, 2 или 4 для связи с базой данных, понимание нюансов окажется полезным.

Тип 4: 100% Чистая Ява

В драйвере типа 4 драйвер на основе чистого Java напрямую связывается с базой данных поставщика через сокетное соединение. Это драйвер самой высокой производительности, доступный для базы данных, который обычно предоставляется самим поставщиком.

Этот тип драйвера чрезвычайно гибок, вам не нужно устанавливать специальное программное обеспечение на клиент или сервер. Далее, эти драйверы могут быть загружены динамически.

СУБД Тип драйвера 4

Драйвер MySQL Connector / J является драйвером типа 4. Из-за запатентованного характера своих сетевых протоколов поставщики баз данных обычно предоставляют драйверы типа 4.

Какой драйвер следует использовать?

Если вы обращаетесь к базе данных одного типа, например, Oracle, Sybase или IBM, предпочтительный тип драйвера — 4.

Если ваше Java-приложение обращается к нескольким типам баз данных одновременно, предпочтительным драйвером является тип 3.

Драйверы типа 2 полезны в ситуациях, когда драйверы типа 3 или 4 еще не доступны для вашей базы данных.

Драйвер типа 1 не считается драйвером уровня развертывания и обычно используется только в целях разработки и тестирования.

Часть 1. Введение в SQL

Эта статья открывает небольшой цикл, посвященный азам взаимодействия с базами данных (БД) в Java и введению в SQL. Многие программы заняты обработкой и модификацией информации, её поддержкой в актуальном состоянии. Поскольку данные — весьма важная часть логики программ, то под них зачастую выделяют отдельное хранилище. Информация в нём структурирована и подчинена специальным правилам, чтобы обеспечить правильность обработки и хранения. Доступ к данным и их изменение осуществляется с помощью специального языка запросов — SQL (Structured Query Language).

Часть 1. Введение в SQL - 1

Система управления базами данных — это ПО, которое обеспечивает взаимодействие разных внешних программ с данными и дополнительные службы (журналирование, восстановление, резервное копирование и тому подобное), в том числе посредством SQL. То есть программная прослойка между данными и внешними программами с ними работающими. В этой части ответим на вопросы что такое SQL, что такое SQL сервер и создадим первую программу для взаимодействия с СУБД.

Виды СУБД

  • Иерархические. Данные организованы в виде древовидной структуры. Пример — файловая система, которая начинается с корня диска и далее прирастает ветвями файлов разных типов и папок разной степени вложенности.
  • Сетевые. Видоизменение иерархической, у каждого узла может быть больше одного родителя.
  • Объектно-ориентированные. Данные организованы в виде классов/объектов c их атрибутами и принципами взаимодействия согласно ООП.
  • Реляционные. Данные этого вида СУБД организованы в таблицах. Таблицы могут быть связаны друг с другом, информация в них структурирована.

Java-университет

SQL

  • Что такое SQL-Сервер и как он работает? Взаимодействие с СУБД происходит по клиент-серверному принципу. Некая внешняя программа посылает запрос в виде операторов и команд на языке SQL, СУБД его обрабатывает и высылает ответ. Для упрощения примем, что SQL Сервер = СУБД.
  • Data Definition Language (DDL) – определения данных. Создание структуры БД и её объектов;
  • Data Manipulation Language(DML) – собственно взаимодействие с данными: вставка, удаление, изменение и чтение;
  • Transaction Control Language (TCL) – управление транзакциями;
  • Data Control Language(DCL) – управление правами доступа к данным и структурам БД.

JDBC

Часть 1. Введение в SQL - 2

В 80-е годы прошлого века персональные компьютеры типа PC XT/AT завоевали рынок. Во многом это произошло благодаря модульности их конструкции. Это означает, что пользователь мог довольно просто менять ту или иную составную часть своего компьютера (процессор, видеокарту, диски и тому подобное). Это замечательное свойство сохранилось и поныне: мы меняем видеокарту и обновляем драйвер (иногда он и вовсе обновляется сам, в автоматическом режиме). Чаще всего при таких манипуляциях ничего плохого не происходит, и существующие программы продолжат работать с обновившейся системой без переустановки. Аналогично и для работы в Java с СУБД. Для стандартизации работы с SQL-серверами взаимодействие с ней можно выполнять через единую точку — JDBC (Java DataBase Connectivity). Она представляет собой реализацию пакета java.sql для работы с СУБД. Производители всех популярных SQL-серверов выпускают для них драйверы JDBC. Рассмотрим схему ниже. Приложение использует экземпляры классов из java.sql. Затем мы передаем необходимые команды для получения/модификации данных. Далее java.sql через jdbc-драйвер взаимодействует с СУБД и возвращает нам готовый результат. Для перехода на СУБД другого производителя часто достаточно сменить JDBC и выполнить базовые настройки. Остальные части программы при этом не меняются.

Первая программа

Приступим к практической части. Создадим Java-проект с помощью IDE JetBrains IntelliJ IDEA. Заметим, что редакция Ultimate Edition содержит в своём составе замечательный инструмент для работы с SQL и БД — Data Grip. Однако она платная для большинства пользователей. Так что нам для учебных целей остается использовать общедоступную IntelliJ IDEA Community Edition. Итак:

  1. Запускаем IDE и создадём новый проект:
    Часть 1. Введение в SQL - 3
  2. Выбираем Java-проект, указываем версию SDK (в примере JDK8, однако это не критично):
    Часть 1. Введение в SQL - 4
  3. На следующем шаге выбираем в качестве типа консольное приложение:
    Часть 1. Введение в SQL - 5
  4. Указываем имя проекта, пакет и его размещение на диске (я создал специально для этого отдельную директорию):
    Часть 1. Введение в SQL - 6
  5. Отложим на минуту IDE и загрузим c www.h2database.com необходимый JDBC-файл для работы c СУБД H2 (download platform independent ZIP):
    Часть 1. Введение в SQL - 7
  6. Заходим внутрь скачанного файла (нас интересует jar-файл по пути h2\bin, который нам далее понадобится, скопируем его):
    Часть 1. Введение в SQL - 8
  7. Возвращаемся в IDE и создаём в корне проекта директории: db, где будут размещены файлы с данными СУБД; lib – здесь JAR-библиотека JDBC:
    Часть 1. Введение в SQL - 9
  8. Переносим в директорию lib jar-файл из шага 6, и добавим его в проект как библиотеку:
    Часть 1. Введение в SQL - 10
  9. Переименуем java-файл в src/sql/demo на StockExchange.java (если забыли, мы собираемся эмулировать простую «биржу»), поменяем его содержимое и запустим:
    Часть 1. Введение в SQL - 11

Теперь мы умеем подключаться к СУБД и отключаться от неё. Каждый шаг отражается в консоли. При первом подключении к СУБД создаётся файл базы данных stockExchange.mv.db.

Разбор кода

Собственно код:

 package sql.demo; import java.sql.*; public class StockExchangeDB < // Блок объявления констант public static final String DB_URL = "jdbc:h2:/c:/JavaPrj/SQLDemo/db/stockExchange"; public static final String DB_Driver = "org.h2.Driver"; public static void main(String[] args) < try < Class.forName(DB_Driver); //Проверяем наличие JDBC драйвера для работы с БД Connection connection = DriverManager.getConnection(DB_URL);//соединениесБД System.out.println("Соединение с СУБД выполнено."); connection.close(); // отключение от БД System.out.println("Отключение от СУБД выполнено."); >catch (ClassNotFoundException e) < e.printStackTrace(); // обработка ошибки Class.forName System.out.println("JDBC драйвер для СУБД не найден!"); >catch (SQLException e) < e.printStackTrace(); // обработка ошибок DriverManager.getConnection System.out.println("Ошибка SQL !"); >> > 

Блок констант:

  1. DB_Driver: Здесь мы определили имя драйвера, которое можно узнать, например, кликнув мышкой на подключенную библиотеку и развернув её структуру в директории lib текущего проекта.
  2. DB_URL: Адрес нашей базы данных. Состоит из данных, разделённых двоеточием:
  3. Протокол=jdbc
  4. Вендор (производитель/наименование) СУБД=h2
  5. Расположение СУБД, в нашем случае путь до файла (c:/JavaPrj/SQLDemo/db/stockExchange). Для сетевых СУБД тут дополнительно указываются имена или IP адреса удалённых серверов, TCP/UDP номера портов и так далее.

Обработка ошибок:

Вызов методов нашего кода может вернуть ошибки, на которые следует обратить внимание. На данном этапе мы просто информируем о них в консоли. Заметим, что ошибки при работе с СУБД — это чаще всего SQLException.

Логика работы:

  1. Class.forName(DB_Driver) – убеждаемся в наличии соответствующего JDBC-драйвера (который мы ранее загрузили и установили).
  2. DriverManager.getConnection(DB_URL) – устанавливаем соединение СУБД. По переданному адресу, JDBC сама определит тип и местоположение нашей СУБД и вернёт Connection, который мы можем использовать для связи с БД.
  3. connection.close() – закрываем соединение с СУБД и завершаем работу с программой.

JDBC

JDBC — это платформенно независимый промышленный стандарт взаимодействия Java-приложений с реляционными базами данных. Впервые был включен в состав JDK 1.1 в 1997 году. JDBC управляет:

Освойте профессию «Java-разработчик»

  • подключением к базе данных;
  • выдачей запросов и команд;
  • обработкой данных, полученных из базы.

Как работает JDBC

Пакет JDBC состоит из двух главных компонентов:

  1. API (программного интерфейса), который поддерживает связь между Java-приложением и менеджером JDBC;
  2. Драйвера JDBC, который поддерживает связь между менеджером JDBC и драйвером базы данных.

Профессия / 14 месяцев
Java-разработчик

Освойте востребованный язык

Group 1321314345 (4)

Соединение с базой устанавливается по особому URL. При этом разработчику не нужно знать специфику конкретной базы — API выступает в качестве посредника между базой и приложением. Это упрощает как процесс создания приложения, так и переход на базу данных другого типа.

Этапы подключения к базе данных

  1. Установка базы данных на сервер или выбор облачного сервиса, к которому нужно получить доступ.
  2. Подключение библиотеки JDBC.
  3. Проверка факта нахождения необходимого драйвера JDBC в classpath.
  4. Установление соединения с базой данных с помощью библиотеки JDBC.
  5. Использование установленного соединения для выполнения команд SQL.
  6. Закрытие соединения после окончания сеанса.

Рассмотрим каждый из этих шагов подробнее.

Установка SQLite

СУБД (система управления базами данных) SQLite отличается компактными размерами и простотой установки — для ее использования не нужна инсталляция дополнительных сервисов. Вся информация хранится в одном файле формата .db, который нужно поместить в папку с программой. Учебную базу можно скачать здесь.

Станьте Java-разработчиком
и создавайте сложные сервисы
на востребованном языке

Импорт JDBC в Java-приложение

Для использования JDBC, как и в случае со всеми остальными приложениями на платформе Java, в системе должен быть установлен JDK. Код для работы с JDBC можно писать как в среде разработки (IDE), так и в обычном текстовом редакторе. Простейшая программа может выглядеть так:

class WhatIsJdbc < public static void main(String args[])< System.out.println("Hello World"); >>

Скомпилируйте этот код с помощью команды:

javac WhatIsJdbc.java

Теперь, когда программа готова, можно импортировать библиотеки JDBC. Для этого вставьте данный ниже код перед строками программы «Hello, World»:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.Statement;

Каждый из импортированных модулей предоставляет доступ к классам, которые необходимы для взаимодействия Java-приложения с базой данных:

  1. Connection подготавливает подключение к базе.
  2. DriverManager обеспечивает подключение. Другая опция — модуль DataSource.
  3. SQLException обрабатывает SQL-ошибки, возникающие при взаимодействии приложении и базы данных.
  4. ResultSet и Statement моделируют наборы результатов данных и операторы SQL.

Добавление JDBC-драйвера в classpath

JDBC-драйвер — это класс, обеспечивающий взаимодействие интерфейса JDBC API с базой данных определенного типа. Драйвер для SQLite представляет собой .jar-файл — его нужно добавить в classpath, как показано ниже:

java.exe -classpath /path-to-driver/sqlite-jdbc-3.23.1.jar:. WhatIsJdbc

Установление соединения с базой данных

Теперь в classpath есть доступ к драйверу. Вставьте приведенный ниже код в файл с вашей первой программой:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.Statement; class WhatIsJdbc < public static void main(String[] args) < Connection conn = null; try < String url = "jdbc:sqlite:path-to-db/chinook/chinook.db"; conn = DriverManager.getConnection(url); System.out.println("Соединение установлено"); >catch (SQLException e) < throw new Error("Ошибка при подключении к базе данных", e); >finally < try < if (conn != null) < conn.close(); >> catch (SQLException ex) < System.out.println(ex.getMessage()); >> > >

Теперь можно компилировать и запускать код. В случае успешного подключения появится сообщение «Соединение установлено».

Создание запроса к базе данных

В приведенном ниже примере показано, как создать запрос к базе SQLite, используя Connection и Statement:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.Statement; class WhatIsJdbc < public static void main(String[] args) < Connection conn = null; try < String url = "jdbc:sqlite:path-to-db-file/chinook/chinook.db"; conn = DriverManager.getConnection(url); Statement stmt = null; String query = "select * from albums"; try < stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) < String name = rs.getString("title"); System.out.println(name); >> catch (SQLException e ) < throw new Error("Problem", e); >finally < if (stmt != null) < stmt.close(); >> > catch (SQLException e) < throw new Error("Problem", e); >finally < try < if (conn != null) < conn.close(); >> catch (SQLException ex) < System.out.println(ex.getMessage()); >> >

Результатом выполнения этого кода будет вывод списка музыкальных альбомов из учебной базы в консоль.

Возможностей JDBC API достаточно для реализации простых приложений. Для более масштабных решений чаще используют JPA API, который позволяет сохранять Java-объекты в базе данных.

Java-разработчик

Java уже 20 лет в мировом топе языков программирования. На нем создают сложные финансовые сервисы, стриминги и маркетплейсы. Освойте технологии, которые нужны для backend-разработки, за 14 месяцев.

картинка (67)

Статьи по теме:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *