Детальна програма навчання
- Позиціонування курсу, його межі в лінійці та старт наскрізного проєкту Task Tracker API
- HTTP очима backend-розробника, а не лише як «методи та статуси з теорії»
- REST як практичний стиль проєктування API, а не як набір догматичних правил
- URI, межі ресурсів і фінальна карта endpoints проєкту
- Spring MVC request handling без магії й без раннього занурення в деталі framework internals
- Джерела вхідних даних у контролері: path, query, headers і criteria DTO
- Request body, response body і коректні HTTP-відповіді на create/update/delete операції
- HttpMessageConverter і реальна механіка body conversion у Spring MVC
- Архітектура проєкту всередині REST-курсу: контролери, сервіси, in-memory репозиторії та storage abstraction
- DTO як захист зовнішнього контракту та як спосіб не витікти внутрішньою моделлю назовні
- Jackson 3 і JSON basics для обраної Boot-лінії курсу
- Jackson-анотації, які справді потрібні в REST-курсі, і де треба зупинитися
- JSON beyond simple DTO: generics, tree model і частково динамічний input без занурення в хаос
- Стабільні response shape, list envelopes і безпечна еволюція JSON-контракту
- Базова валідація вхідних даних через Bean Validation і Spring Boot validation stack
- Валідація вкладених структур, колекцій і параметрів запиту
- Кастомна валідація, cross-field rules і межа між input validation та business validation
- Як повертати помилки валідації так, щоб вони були корисні клієнту й не ламали єдиний error contract
- Категорії помилок в API і сучасний базовий шлях через ProblemDetail
- @ControllerAdvice, @ExceptionHandler і переведення винятків у єдині HTTP-відповіді
- Проєктування хорошого error response: коди, деталі, field errors і конфліктні бізнес-сценарії
- Collection endpoints, pagination і sorting без опори на Spring Data abstractions
- Filtering і search без перетворення API на хаотичний набір query-параметрів
- Створення, оновлення та видалення ресурсів: POST, PUT, PATCH, DELETE без зайвої плутанини
- Не-CRUD сценарії, переходи станів і допоміжні підресурси без RPC-хаосу
- File upload у Spring MVC і multipart/form-data як частина нормального прикладного API
- Download endpoints, локальне файлове сховище та розділення metadata/content
- Externalized configuration у контексті REST-курсу та прикладних сценаріїв проєкту
- Еволюція API і OpenAPI-документація як продовження contract-first підходу
- @WebMvcTest, MockMvc і фінальне складання навички production-like REST API
- Навіщо застосунку потрібен persistence layer, як співвідносяться JDBC, JPA, Hibernate і Spring Data JPA
- SQL refresher — таблиці, ключі, обмеження та joins як фон для entity mapping
- SQL refresher для write-сценаріїв — DML, індекси та транзакційна логіка до @Transactional
- Піднімаємо PostgreSQL, налаштовуємо DataSource, HikariCP і збираємо каркас проєкту shop-data-jpa
- Перша entity, первинний ключ і базовий field mapping
- Entity design — states, @Embeddable, value objects і межі моделі
- Repository abstraction — як інтерфейс стає компонентом і де межа відповідальності репозиторію
- ManyToOne, OneToMany, owning side і ментальна модель зв'язків у JPA
- OneToOne, controlled ManyToMany і перші fetch-пастки, які краще побачити завчасно
- Derived queries, сортування, Page і Slice для типових REST- і service-сценаріїв
- JPQL і @Query як наступний крок, коли імена методів перестають бути зручними
- Projections як нормальний read-side інструмент, а не рідкісна екзотика
- Native queries — лише там, де JPQL вже незручний, без перетворення курсу на SQL-first історію
- @Modifying, bulk update/delete і різниця між «змінити сутності» та «змінити дані швидко»
- Pragmatic Specification для динамічної фільтрації та controlled preview більш гнучкого querying
- Сучасний repository API, legacy-патерни старих статей і фіналізація querying-блоку
- Чому @Transactional — це межа бізнес-операції, а не декоративна анотація
- Проєктуємо placeOrder() як повноцінний unit of work, а не набір викликів репозиторіїв
- Необхідна глибина щодо propagation, isolation і transactional defaults для рівня Junior
- Persistence context, dirty checking, flush і detached-об'єкти — те, що сприймається як «магія Hibernate»
- Lazy loading, LazyInitializationException і N+1 як перший справжній біль ORM
- join fetch, @EntityGraph і projections для свідомого керування читанням даних
- Flyway і життя схеми БД — від demo-схеми до відтворюваного data-layer
- Обмеження БД, exception translation і межа між кодовою validation та захистом даних
- Конкурентний доступ, lost update і optimistic locking як база для багатокористувацького застосунку
- Auditing, спільні поля та підтримуваний data-layer без зайвої архітектурної ваги
- @DataJpaTest, repository tests і перевірка маппінгів, запитів і pagination на ізольованому data-layer
- Transactional service tests, H2 traps, optional Testcontainers preview і фінальне складання data-layer
- Навіщо Hibernate, що будуватимемо і як читати SQL-вивід
- Життєвий цикл сутності та persistence context як основа всього іншого
- Dirty checking і як Hibernate автоматично помічає зміни в об'єктах
- Flush і коли саме Hibernate вирішує звертатися до бази даних
- Detached-об'єкти, що з ними відбувається і як правильно використовувати merge()
- Lazy loading, proxy-об'єкти і чому межі транзакції важливіші, ніж здається
- N+1 на живих прикладах як перша справжня ORM-проблема
- JOIN FETCH, EntityGraph і @BatchSize як інструменти свідомого завантаження даних
- Entity як write-model і projection як read-model у зрілому persistence layer
- HQL, Criteria API і native SQL — три інструменти та розуміння коли що обирати
- Owning side, cascades і lifecycle design як фундамент коректного mapping
- Link entity замість наївного ManyToMany — чесна модель із контролем над lifecycle
- equals(), hashCode() і proxy в колекціях як джерело тихих дорогих багів
- Embeddables, value objects і converters для виразної та зручної моделі
- Стратегії ідентифікаторів, natural id і їхня реальна вартість у runtime
- Спадкування, @DynamicUpdate, обмеження схеми та зрілий mapping design
- Hibernate всередині Spring-транзакцій і transaction boundary на рівні сервісу
- Optimistic locking як базовий захист від lost update у бізнес-сценаріях
- Pessimistic locking як точковий інструмент для критичних конкурентних секцій
- Soft delete, filters і керування видимістю даних у реальному застосунку
- Hibernate Envers як повноцінна історія змін без ручних audit fields
- Lifecycle callbacks і listeners — зручний механізм із прихованими side effects
- JDBC batching як практичний спосіб прискорити масовий запис
- Bulk operations і StatelessSession як вихід за межі entity-моделі
- Read-only mode, first-level cache і кешування як частина performance-мислення
- SQL diagnostics і performance audit як системний підхід до оптимізації
- Hibernate під капотом Spring Data JPA і межі зручності абстракції
- ORM integration testing як спосіб ловити реальні баги шару даних
- Hibernate anti-patterns і рефакторинг як підготовка до чесного code review
- Фінальний persistence audit, decision framework і roadmap зростання після курсу
440+
Лекцій
800+
Завдань
88
Тестів
А також:
- Миттєва перевірка
- AI code validator
- Плагін для IDE
- WebIDE
- Гейміфікація