Введение
Поговорим о JDBC — одном из ключевых инструментов в мире Java, который позволяет подключаться к базам данных и выполнять SQL-запросы. Это основа для понимания всех современных фреймворков, таких как Hibernate, Spring Data и JPA.
💡 JDBC (Java Database Connectivity) — это стандартный API в Java, позволяющий подключаться к любой реляционной базе данных (MySQL, PostgreSQL, Oracle, H2 и др.) и выполнять SQL-запросы.
Что такое JDBC?
JDBC — это интерфейс, который определяет, как Java-приложение может взаимодействовать с базой данных. Он не является базой данных, а служит мостом между Java и СУБД.
Представьте, что вы хотите поговорить с человеком, который говорит на французском. У вас есть переводчик — вот JDBC и есть такой "переводчик" между Java и базой данных.
Основные компоненты JDBC
JDBC состоит из нескольких ключевых классов и интерфейсов:
- DriverManager - Управляет драйверами баз данных
- Connection - Соединение с базой данных
- Statement - Выполнение SQL-запросов
- PreparedStatement - Подготовленные запросы (с параметрами)
- ResultSet - Результат выполнения запроса
Разберём каждый по порядку.
1. DriverManager и Connection
Чтобы начать работать с базой, нужно:
- Загрузить драйвер
- Установить соединение
💡 Объяснение для пятилетнего:
Представь, что ты хочешь позвонить другу.
Сначала ты включаешь телефон (DriverManager),
потом набираешь номер и соединяешься (Connection).
Пример: Подключение к H2 (в памяти)
2. Statement — выполнение SQL
Когда соединение есть, можно выполнять SQL-запросы с помощью Statement.
Пример: Создание таблицы
⚠️ execute() — для любых запросов (DDL, DML).
executeQuery() — только для SELECT.
executeUpdate() — для INSERT, UPDATE, DELETE.
3. PreparedStatement — безопасные запросы
Используйте PreparedStatement, когда в запросе есть параметры. Он защищает от SQL-инъекций и работает быстрее.
💡 Объяснение:
Statement — как письмо, написанное от руки.
PreparedStatement — как бланк с полями: вы просто подставляете данные.
Пример: Вставка данных
✅ ? — это параметры.
setInt(), setString() — безопасная подстановка.
4. ResultSet — чтение данных
Когда вы выполняете SELECT, результат возвращается как ResultSet — это как таблица с данными.
Пример: Чтение всех пользователей
🔍 Методы ResultSet:
- next() — переходит к следующей строке, возвращает false, если строк нет
- getInt("column"), getString("column") — получает значение по имени
5. Обработка исключений: SQLException
Все операции с JDBC могут выбросить SQLException.
Его нужно всегда обрабатывать.
💡 Почему важно?
- Нет подключения к БД
- Ошибка в SQL-синтаксисе
- Несуществующая таблица
- Нарушение ограничений (например, PRIMARY KEY)
6. Работа с H2 — база данных в памяти
H2 — это лёгкая встроенная СУБД на Java. Идеальна для обучения и тестирования.
Почему H2?
- Устанавливается как JAR
- Поддерживает SQL
- Может работать в памяти (mem:) или в файле
- Отлично интегрируется с Maven/Gradle
Добавление H2 в проект (Maven)
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.2.232</version>
<scope>runtime</scope>
</dependency>
📌 Добавьте в pom.xml и Maven сам скачает H2.
Заключение
JDBC — это фундамент для работы с базами данных в Java.
Даже если вы будете использовать Spring или Hibernate — знание JDBC поможет:
- Понимать, что происходит "под капотом"
- Писать эффективные SQL-запросы
- Диагностировать ошибки подключения
- Писать чистый, безопасный код
💡 Совет: Практикуйтесь с H2 — это самый простой способ начать, не устанавливая MySQL или PostgreSQL.
Примеры, рассмотренные в статье, можно найти по адресу:
https://github.com/ShkrylAndrei/blog_yandex/tree/main/src/main/java/info/shkryl/workWithJDBC