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 и жизнь схемы БД — от демо-схемы к воспроизводимому 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-валидатор кода
  • Плагин для IDE
  • WebIDE
  • Геймификация