🏗️ Основні поняття (Core)

  • Spring Data JPA — частина екосистеми Spring, що полегшує роботу з реляційними БД, зменшуючи кількість шаблонного коду.
  • Hibernate — найпопулярніша реалізація ORM, яка використовується в Spring Boot за замовчуванням.
  • ORM (Object-Relational Mapping) — технологія, що зв'язує таблиці БД з об'єктами (класами) у коді Java.
  • Entity (Сутність) — звичайний Java-клас, який відображає структуру таблиці в базі даних (позначається @Entity).
  • Repository — інтерфейс для виконання операцій над даними (пошук, збереження, видалення).
  • DataSource — об'єкт, що містить параметри підключення до бази даних (URL, логін, пароль).

📝 Анотації сутностей (JPA Annotations)

  • @Id — визначає поле, яке є первинним ключем (Primary Key).
  • @GeneratedValue — вказує стратегію автоматичного створення ID (наприклад, IDENTITY або SEQUENCE).
  • @Column — налаштовує відповідність поля властивості стовпцю таблиці (ім'я, довжина, обов'язковість).
  • @Table — дозволяє вказати назву таблиці в БД, якщо вона відрізняється від імені класу.
  • @Transient — позначає поле, яке не потрібно зберігати в базу даних.

🤝 Зв'язки між таблицями (Associations)

  • OneToOne — зв'язок «один до одного» (наприклад, Користувач та його Профіль).
  • OneToMany / ManyToOne — зв'язок «один до багатьох» (один Департамент — багато Співробітників).
  • ManyToMany — зв'язок «багато до багатьох» (багато Студентів — багато Курсів), зазвичай створює проміжну таблицю.
  • FetchType.LAZY — ліниве завантаження; дані завантажуються з БД тільки в момент звернення до них.
  • FetchType.EAGER — негайне завантаження; дані завантажуються разом з основним об'єктом.
  • CascadeType — визначає, чи мають операції (збереження, видалення) поширюватися на пов'язані об'єкти.

🛠️ Робота з даними та запитами

  • Query Methods — метод в репозиторії, назва якого генерує SQL-запит автоматично (наприклад, findByEmail).
  • @Query — анотація для написання запитів вручну на мові JPQL або Native SQL.
  • JPQL (Java Persistence Query Language) — об'єктно-орієнтована мова запитів, схожа на SQL, але працює з об'єктами, а не таблицями.
  • Native Query — звичайний SQL-запит, специфічний для конкретної БД (PostgreSQL, MySQL тощо).
  • Paging & Sorting — механізми Spring Data для розбиття результатів на сторінки та їхнього сортування.

⚡ Транзакції та стани

  • @Transactional — анотація, яка гарантує, що набір операцій виконається повністю або не виконається зовсім (Rollback у разі помилки).
  • Persistence Context — «кеш першого рівня», де Hibernate зберігає об'єкти під час поточної транзакції.
  • Dirty Checking — механізм Hibernate, який автоматично оновлює дані в БД, якщо об'єкт @Entity був змінений у коді.
  • Liquibase / Flyway — інструменти для міграції баз даних (керування версіями структури БД).
  • H2 Database — швидка вбудована база даних у пам'яті (In-memory), яка часто використовується для тестів.


Остання зміна: середа 20 травня 2026 12:13 PM