Подробная программа обучения
- Позиционирование курса, его границы в линейке и старт сквозного проекта 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
- Геймификация