JavaRush /Курсы /Модуль 5. Spring /Конфигурация подключения к базе данных через Spring Boot ...

Конфигурация подключения к базе данных через Spring Boot (application.properties)

Модуль 5. Spring
5 уровень , 6 лекция
Открыта

Мы дошли до одной из самых интересных тем — конфигурации подключения к базе данных в Spring Boot. Сегодня мы погрузимся в тонкости настройки базы данных через файл application.properties, разберем ключевые параметры, а также потренируемся подключать реальную базу данных. Это — основа основ, ведь без подключения к базе данных ваше приложение будет как библиотека без книг.


1. Что такое application.properties?

Вы уже немного знакомы с Java и Spring, поэтому уже в курсе, что в каждом приложении есть место, где хранятся основные настройки. В Spring Boot таким местом является файл application.properties (или его YAML-альтернатива application.yml). Этот файл позволяет:

  • Настроить подключение к базе данных.
  • Управлять поведением Hibernate.
  • Конфигурировать пул соединений.
  • А также многое другое — например, управлять логированием или профилями приложения.

Вот так выглядит типичный файл application.properties для настройки базы данных:


spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

Давайте разбираться с каждым из этих параметров по порядку.


2. Основные параметры подключения к базе данных

URL базы данных (spring.datasource.url)

URL базы данных — это строка, которая описывает, как подключиться к вашей базе данных. Она включает:

  • Протокол (например, jdbc:mysql).
  • Адрес сервера (localhost в случае локальной машины).
  • Порт базы данных (например, 3306 для MySQL).
  • Имя базы данных (my_database в примере).

Пример для MySQL:


spring.datasource.url=jdbc:mysql://localhost:3306/my_database

Пример для PostgreSQL:


spring.datasource.url=jdbc:postgresql://localhost:5432/my_database

Если в вашем проекте используется другой драйвер, подробности можно найти в официальной документации JDBC.


Логин и пароль (spring.datasource.username и spring.datasource.password)

Эти параметры используются для аутентификации приложения в базе данных. Например:


spring.datasource.username=root
spring.datasource.password=secret

Если вы используете какую-то преднастроенную базу данных (например, встроенную H2), то логин и пароль могут быть пустыми, но для большинства реальных баз данных они необходимы.


Драйвер базы данных (spring.datasource.driver-class-name)

Spring Boot автоматически определяет драйвер базы данных на основе указанного URL, но иногда возникает необходимость явно указать его:


spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

Для популярных баз данных, таких как MySQL и PostgreSQL, драйверы легко доступны в Maven Central. Например, для MySQL вам нужно добавить зависимость:


<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>

3. Hibernate-параметры

Spring Boot использует Hibernate как реализацию JPA по умолчанию, поэтому мы можем настроить его поведение:

Автоматическая генерация схемы (spring.jpa.hibernate.ddl-auto)

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

  • create — база данных создаётся заново при каждом запуске (с удалением старых данных).
  • create-drop — база создаётся при запуске, но удаляется после завершения работы приложения.
  • update — изменяет существующую схему, не трогая данные.
  • validate — проверяет, соответствует ли схема базе данных вашим сущностям, но не изменяет её.
  • none — Hibernate ничего не делает со схемой.

В целях разработки чаще всего используется update.


spring.jpa.hibernate.ddl-auto=update

Но будьте осторожны: эта настройка может "сломать" данные на продакшене. На боевом сервере лучше использовать validate или none.


Логи Hibernate (spring.jpa.show-sql и spring.jpa.properties.hibernate.format_sql)

Практика показывает, что просмотр SQL-запросов во время разработки полезен. Spring Boot позволяет включить их через параметр spring.jpa.show-sql:


spring.jpa.show-sql=true

Чтобы улучшить читабельность запросов, можно также включить их форматирование:


spring.jpa.properties.hibernate.format_sql=true

Дополнительные параметры пула соединений

Для управления соединениями с базой данных в Spring используется HikariCP (по умолчанию). Вы можете настроить параметры пула соединений, такие как максимальное количество соединений, таймауты и т.д.:


spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.max-lifetime=1800000

Подробнее о доступных настройках читайте в документации HikariCP.


4. Практика: Подключение приложения к базе данных MySQL

Шаг 1. Добавьте зависимость для MySQL в pom.xml:


<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>

Шаг 2. Настройте базу данных в application.properties:


spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

Шаг 3. Запустите приложение.

Если у вас всё настроено правильно, Spring Boot автоматически создаст таблицы для ваших сущностей. SQL-запросы будут отображаться в консоли из-за параметра spring.jpa.show-sql.


5. Подключение к встроенной базе данных (H2)

Если у вас ещё нет MySQL или PostgreSQL, можно протестировать приложение с помощью H2. Вам нужно лишь добавить зависимость:


<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <scope>runtime</scope>
</dependency>

И добавить настройки в application.properties:


spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=create
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

Теперь вы можете открыть веб-консоль H2 по адресу http://localhost:8080/h2-console и посмотреть, как работают ваши таблицы.


6. Типичные ошибки и их исправление

  • Ошибка подключения к базе данных. Проверьте, запущен ли сервер базы данных и правильно ли указаны URL, логин и пароль.
  • SQLSyntaxErrorException. Убедитесь, что ваши сущности корректно настроены и соответствуют структуре таблиц.
  • Драйвер не найден. Не забудьте добавить зависимость для вашей базы данных в pom.xml.

Если всё это звучит как работа детектива, добро пожаловать в мир настройки баз данных. Здесь вы будете проводить много времени (и это нормально).


На этом мы завершаем настройку базы данных. Подключение конфигураций — это первый шаг к созданию гибкого и мощного приложения. Теперь ваш Spring Boot проект готов взаимодействовать с реальными базами данных.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ