webprogr.ru Новости

RSS

{{toodo.preview}}

...
{{toodo.name}}

{{toodo.preview}}

далее..

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

смотреть..

toodo.name

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

перейти...

{{toodo.preview}}

...
{{toodo.name}}

{{toodo.preview}}

далее..

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

смотреть..

toodo.name

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

перейти...


Последние новости

Архитектура JDBC

Архитектура JDBC

На схеме показано, как Java-приложение взаимодействует с базой данных через JDBC. Основные компоненты архитектуры JDBC:
Java-приложение – ваш код, который хочет выполнить запрос к базе. Оно вызывает методы JDBC API.
JDBC API – набор интерфейсов и классов (java.sql.*), с которыми работает приложение (например, DriverManager, Connection, Statement и др.).
DriverManager – класс-посредник, который управляет набором зарегистрированных драйверов и выбирает подходящий драйвер для подключения к нужной базе данных. Когда приложение запрашивает соединение (DriverManager.getConnection(...)), DriverManager перебирает драйверы, способные обработать данный URL.
JDBC-драйвер – библиотека, реализующая низкоуровневое общение с конкретной СУБД (например, для MySQL – MySQL Connector/J, для PostgreSQL – PostgreSQL JDBC Driver и т.д.). Драйвер знает, как именно по сети или локально общаться с конкретной СУБД, понимает ее протокол.
База данных – собственно, система управления базой данных (Oracle, MySQL, PostgreSQL и др.), с которой устанавливается соединение и которой отправляются SQL-запросы.
Последовательность работы JDBC следующая: приложение вызывает метод DriverManager для подключения, DriverManager находит нужный драйвер и через него устанавливает соединение с БД. После этого приложение получает объект Connection и может с его помощью создавать Statement или PreparedStatement. Отправленный через Statement SQL-запрос проходит через драйвер к базе данных, там выполняется, а результаты (набор результатов) возвращаются обратно в виде объекта ResultSet. Приложение перебирает ResultSet, извлекает данные, после чего закрывает ресурсы (ResultSet, Statement, Connection).
Важно отметить, что начиная с JDBC 4.0 (Java 6) не требуется вручную регистрировать драйвер с помощью Class.forName() – достаточно добавить драйвер в classpath, и DriverManager автоматически обнаружит его (драйверы используют SPI-механизм регистрации). Поэтому в современном Java-коде вы просто указываете JDBC URL и зависимости, без ручной загрузки класса драйвера.
Основные интерфейсы и классы JDBC
DriverManager – класс-менеджер, который регистрирует JDBC-драйверы и через метод DriverManager.getConnection() создает подключение к базе данных.
Connection – интерфейс, представляющий активное соединение с базой данных. Предоставляет методы для управления транзакцией (commit, rollback), настройки режимов (автофиксация) и получения объектов для выполнения запросов (createStatement, prepareStatement и др.).
Statement – интерфейс для выполнения простых SQL-запросов (статических, без параметров). Метод executeQuery возвращает результаты (ResultSet), executeUpdate – число измененных строк, также есть метод execute для произвольных команд.
PreparedStatement – подкласс Statement для подготовки предварительно скомпилированных SQL-запросов с параметрами. Позволяет подставлять параметры вместо литералов (?) и исполнять запрос многократно с разными значениями. Улучшает безопасность (защита от SQL-инъекций) и производительность при повторном выполнении.
CallableStatement – интерфейс для вызова хранимых процедур в базе данных. Позволяет вызывать процедуры/функции, определенные на стороне СУБД, и получать выходные параметры.
ResultSet – интерфейс для чтения результатов выборки (SELECT). Представляет табличные данные, позволяет перемещаться по строкам (по умолчанию вперед) и получать значения колонок разных типов. Имеет методы next(), getInt(), getString() и др. для доступа к данным текущей строки.
SQLException – класс исключений, сигнализирующий об ошибках при работе с базой (ошибки SQL-синтаксиса, нарушения ограничений, проблемы сети и т.д.). Обычно обрабатывается в блоках try-catch, позволяет получить информацию о коде ошибки (getErrorCode), состоянии SQL (getSQLState) и цепочке причин (для некоторых СУБД одна ошибка может содержать несколько причин).

Рейтинг@Mail.ru