Архитектура
2.33M
Category: databasedatabase

JDBC - платформенно независимый промышленный стандарт взаимодействия Java приложений с реляционными базами данных

1.

JDBC
astondevs.ru

2.

JDBC
JDBC — это платформенно независимый промышленный стандарт взаимодействия Javaприложений с реляционными базами данных. Впервые был включен в состав JDK 1.1 в 1997 году.
JDBC управляет:
● подключением к базе данных;
● выдачей запросов и команд;
● обработкой данных, полученных из базы
Главным принципом архитектуры является универсальный способ
общения с разными базами данных. Т.е. с точки зрения приложения на
Java общение с Oracle или PostgreSQL не должно отличаться.
* Сами SQL-запросы могут отличаться за счет разного набора функций
для дат, строк и других. Но это уже строка запроса другая, а алгоритм и
набор команд для доставки запроса на SQL-сервер и получение данных
от SQL-сервера отличаться не должны.

3. Архитектура

Driver – Основная задача данного класса – установление
соединения с БД (буквально один значимый метод в АПИ
connect(url, props))
DriverManager – Является уровнем управления в JDBC и
находится между пользователем и драйверами. Он
отслеживает все доступные драйверы и управляет
установлением соединений между БД и соответствующим
драйвером.
Connection – Позволяет: отправлять запросы к бд,
управлять транзакциями, предоставляет доступ к
метаданным.
Statement – Используется для выполнения sql запросов и
вызова функций.
ResultSet – Предоставляет результат выполнения
запроса/вызова функции.

4.

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

5.

Statements
Statement
PreparedStatement
CallableStatement
Он используется для выполнения
обычных статических SQL-запросов.
Он используется для выполнения
параметризованных или
динамических SQL-запросов.
Он используется для вызова
хранимых процедур.
Предпочтительно, когда конкретный
SQL-запрос должен выполняться
только один раз.
Предпочтительно, когда конкретный
запрос должен выполняться
несколько раз.
Предпочтительно, когда должны
выполняться хранимые процедуры.
Вы не можете передавать параметры
в SQL-запрос с помощью этого
интерфейса.
Вы можете передать параметры в
SQL-запрос во время выполнения,
используя этот интерфейс.
С помощью этого интерфейса вы
можете передавать 3 типа
параметров. Это - IN, OUT и IN OUT.
Этот интерфейс в основном
используется для операторов DDL,
таких как CREATE, ALTER, DROP и т.
Д.
Он используется для любого типа
SQL-запросов, которые должны
выполняться несколько раз.
Он используется для выполнения
хранимых процедур и функций.
Производительность этого
интерфейса очень низкая.
Производительность этого
интерфейса лучше, чем у
интерфейса Statement (когда он
используется для многократного
выполнения одного и того же
запроса).
Производительность этого
интерфейса высока.

6.

Вопрос на 1 балл
Почему PreparedStatment производительнее Statement?

7.

Вопрос на 1 балл
Какой из Statement’ов может защитить от sql инъекции?

8.

ResultSet
• Является результатом выполнения
запроса/вызова функции.
• Имеет курсор, который указывает
на позицию перед следующей
строкой. Изначально до 1 строки.
• Имеет метод next() который,
который перемещает курсор на 1
позицию и возвращает true, если
есть еще не обработанные строки,
false если строки закончились
• Предоставляет API получения
данных из результирующей строки.

9.

10.

Транзакции в JDBC
• Auto-commit mode – мод при котором все sql запросы будут сразу,
автоматически закомичены.
• Commit
• Rollback – откат транзакции до ранее закомиченной или до save point.
• Save Point – некий чекпоинт в транзакции, к которому можем выполнить
rollback.
• Isolation level

11.

12.

Уровни изоляции
English     Русский Rules