Найти в Дзене
Записки о Java

JDBC — основы: как Java работает с базой данных

Оглавление
Рисунок: работа с JDBC в JAVA
Рисунок: работа с JDBC в JAVA

Введение

Поговорим о 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

Чтобы начать работать с базой, нужно:

  1. Загрузить драйвер
  2. Установить соединение

💡 Объяснение для пятилетнего:

Представь, что ты хочешь позвонить другу.
Сначала ты включаешь телефон (DriverManager),
потом набираешь номер и соединяешься (Connection).

Пример: Подключение к H2 (в памяти)

Рисунок: листинг подключение к СУБД H2
Рисунок: листинг подключение к СУБД H2

2. Statement — выполнение SQL

Когда соединение есть, можно выполнять SQL-запросы с помощью Statement.

Пример: Создание таблицы

Рисунок: пример использования Statement
Рисунок: пример использования Statement

⚠️ execute() — для любых запросов (DDL, DML).
executeQuery() — только для SELECT.
executeUpdate() — для INSERT, UPDATE, DELETE.

3. PreparedStatement — безопасные запросы

Используйте PreparedStatement, когда в запросе есть параметры. Он защищает от SQL-инъекций и работает быстрее.

💡 Объяснение:

Statement — как письмо, написанное от руки.
PreparedStatement — как бланк с полями: вы просто подставляете данные.

Пример: Вставка данных

Рисунок: листинг примера использования PreparedStatement
Рисунок: листинг примера использования PreparedStatement

✅ ? — это параметры.
setInt(), setString() — безопасная подстановка.

4. ResultSet — чтение данных

Когда вы выполняете SELECT, результат возвращается как ResultSet — это как таблица с данными.

Пример: Чтение всех пользователей

Рисунок: листинг примера использования ResultSet
Рисунок: листинг примера использования 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