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 проєкт готовий взаємодіяти з реальними базами даних.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ