JavaRush/Курси/Курс Spring in Practice

Курс Spring in Practice

Пройдіть шлях від першого REST-контролера до зрілого persistence layer із Hibernate. Ви навчитеся проєктувати production-like REST API, працювати з PostgreSQL через Spring Data JPA, розуміти внутрішню механіку Hibernate і тестувати кожен шар застосунку. Перейдіть від теорії Spring до прикладної backend-розробки, де ваші навички одразу застосовні в реальних проєктах.
4.9
500+ відгуків
30k випускників побудували кар'єру в ІТ
Детальна програма навчання
  • Позиціонування курсу, його межі в лінійці та старт наскрізного проєкту 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
  • Гейміфікація