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 — для “по-справжньому”.
- Стартує миттєво
- Не треба ставити сервер БД
- Ідеально для лабораторних
Мінус: “іграшкова” для продакшну.
- Дуже поширена
- Проста для початку
- Добре для CRUD-систем
Мінус: місцями менше “розумних” можливостей, ніж у Postgres.
- Багато фіч і строгість
- Стабільність і масштабування
- Часто вибір продуктів/стартапів
Мінус: для новачків може бути трохи “важчою”.
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 Console зазвичай: /h2-console (дивимося таблиці прямо в браузері).
Потрібно створити БД app_db перед запуском (або дозволити авто-створення через інструмент БД).
Postgres суворіший і часто краще ловить “криві” дані.
6) Як дані потрапляють в БД (на рівні курсу)
Ми не будемо писати SQL руками на кожному кроці. Ми використовуємо JPA:
- @Entity описує таблицю
- Repository дає CRUD методи
- Spring сам формує SQL за вас (через Hibernate)
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 та перевірка таблиць у БД