Ми дійшли до однієї з найцікавіших тем — конфігурації підключення до бази даних у 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 проєкт готовий взаємодіяти з реальними базами даних.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ