База даних: MySQL / H2 / PostgreSQL

База даних зберігає інформацію про користувачів та інші об’єкти системи. У Spring Boot ми працюємо з БД через JPA.
SQL
Tables
Primary Key
Constraints
JPA / Hibernate
Transactions

1) Для чого потрібна база даних у нашому проєкті

  • Зберігає дані постійно (на відміну від пам’яті JVM, яка стирається після зупинки).
  • Дозволяє шукати, фільтрувати, оновлювати дані.
  • Підтримує цілісність (унікальність email, зв’язки між таблицями, тощо).
  • Без БД реальний backend — це просто “демо”.

2) Реляційні БД і SQL — коротко, без води

Реляційна БД — це таблиці (rows/columns). SQL — мова для роботи з цими таблицями.

Основні операції
  • SELECT — читати
  • INSERT — додати
  • UPDATE — змінити
  • DELETE — видалити
Ключові поняття
  • Таблиця / рядок / колонка
  • Primary Key (id)
  • Unique (email)
  • Foreign Key (зв’язки)

3) MySQL vs PostgreSQL vs H2 — що вибрати і коли

Суть: H2 — для навчання/швидкого старту, MySQL/PostgreSQL — для “по-справжньому”.

H2 (вбудована/тимчасова)
  • Стартує миттєво
  • Не треба ставити сервер БД
  • Ідеально для лабораторних

Мінус: “іграшкова” для продакшну.

MySQL (популярна в бізнесі)
  • Дуже поширена
  • Проста для початку
  • Добре для CRUD-систем

Мінус: місцями менше “розумних” можливостей, ніж у Postgres.

PostgreSQL (сильна, “доросла”)
  • Багато фіч і строгість
  • Стабільність і масштабування
  • Часто вибір продуктів/стартапів

Мінус: для новачків може бути трохи “важчою”.

4) Як Spring Boot “підключається” до БД

Потрібно 3 речі: driver, URL, credentials.

Що додаємо в проєкт
  • spring-boot-starter-data-jpa (JPA/Hibernate)
  • Драйвер БД: mysql-connector-j або postgresql
  • Для H2: h2
Де налаштовуємо
  • application.properties або application.yml
  • URL, логін, пароль
  • Hibernate DDL (create/update)

5) Приклади налаштувань (готові шаблони)

H2 (найшвидше для лабораторної)
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.hibernate.ddl-auto=update spring.h2.console.enabled=true

H2 Console зазвичай: /h2-console (дивимося таблиці прямо в браузері).

MySQL (як у багатьох компаніях)
spring.datasource.url=jdbc:mysql://localhost:3306/app_db?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=your_password spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

Потрібно створити БД app_db перед запуском (або дозволити авто-створення через інструмент БД).

PostgreSQL (часто “дорослий стандарт”)
spring.datasource.url=jdbc:postgresql://localhost:5432/app_db spring.datasource.username=postgres spring.datasource.password=your_password spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

Postgres суворіший і часто краще ловить “криві” дані.

6) Як дані потрапляють в БД (на рівні курсу)

Ми не будемо писати SQL руками на кожному кроці. Ми використовуємо JPA:

  • @Entity описує таблицю
  • Repository дає CRUD методи
  • Spring сам формує SQL за вас (через Hibernate)
@Entity public class User { @Id @GeneratedValue private Long id; private String name; private String email; }

7) Типові граблі студентів (і як швидко лікувати)

  • “Access denied” → неправильний логін/пароль або користувач без прав.
  • “Unknown database” → БД не створена (app_db).
  • “Cannot load driver class” → не додали драйвер у залежності.
  • “Connection refused” → сервер БД не запущений.
  • Дані зникли → це H2 in-memory (після перезапуску все стирається).

8) Що ми використовуємо на практичній №2

  • Для швидкого старту: H2 (щоб у всіх запустилось)
  • Для реалістики (за бажанням/для сильніших): MySQL або PostgreSQL
  • Підключення через Spring Data JPA

Далі буде окремий слайд з налаштуванням конкретної БД крок за кроком.

Далі: налаштування application.properties та перевірка таблиць у БД