Продвинутый Hibernate: решение вызовов уровня Enterprise

13 участников

О чём курс

Курс представляет собой глубокое погружение в оптимизацию взаимодействия Java-приложений с базами данных через ORM Hibernate. Программа разработана для опытных Java/Spring разработчиков, техлидов и архитекторов, которые сталкиваются с ограничениями стандартных подходов, стремятся повысить производительность своих систем и хотят досконально разобраться в том, как Hibernate работает «под капотом». Основная цель обучения — избавить разработчика от «магии» фреймворка, научив его управлять поведением ORM в сложных enterprise-сценариях.

В ходе обучения вы освоите техники, позволяющие радикально улучшить работу с данными. Вы научитесь эффективно бороться с классической проблемой N+1, даже в тех случаях, когда стандартные методы, такие как Join Fetch, приводят к декартовым произведениям или ошибкам MultipleBagFetchException. Курс охватывает вопросы оптимизации тяжелой пагинации: вы узнаете, как внедрять Slice и SQL Window Functions, чтобы избежать перегрузки базы данных при подсчете миллионов строк, а также освоите Fast Pagination (Seek Method) для обеспечения стабильного времени отклика O(1) в бесконечных списках.

Значительное внимание уделено работе с большими объемами данных. Вы научитесь ускорять пакетную обработку в 10 и более раз за счет использования StatelessSession и Bulk API, минимизируя оверхед на Dirty Checking и L1-кэш. Также будут разобраны продвинутые темы: реализация консистентного Soft Delete, который не конфликтует с уникальными индексами, проектирование SaaS-архитектуры с использованием @TenantId для изоляции данных, а также работа с рекурсивными CTE и деревьями в JPA. Отдельный блок посвящен надежности распределенных систем: вы научитесь реализовывать паттерн Transactional Outbox для связки БД и брокеров сообщений (Kafka/Rabbit) без использования тяжелых XA-транзакций.

Формат обучения предполагает глубокий разбор реальных enterprise-кейсов, что позволяет применять полученные знания на практике сразу после завершения уроков. Курс идеально подходит тем, кто хочет перейти от уровня «пользователь Hibernate» к уровню «эксперт по производительности БД», способный проектировать масштабируемые и отказоустойчивые системы. Вы получите не только теоретическую базу, но и конкретные инструменты для решения проблем, с которыми сталкиваются высоконагруженные проекты в 2026 году.

Программа обучения

Блок 1. Стратегии оптимизации: от базы к продвинутому тюнингу Цель: производительность «в моменте», применимо завтра

  • findById vs getReferenceById (Proxy)
  • Минимизируем количество Select при сохранении связей на ровном месте
  • Page vs Slice vs List
  • Разбор ситуаций, когда count(*) становится непозволительной роскошью
  • @BatchSize
  • Лечение N+1 в ситуациях, когда Join Fetch либо невозможен, либо от него больше вреда, чем пользы
  • StatelessSession
  • Bulk-задачи в обход Persistence Context, без dirty checking и L1 cache
  • Pagination evolution
  • Почему Offset убивает БД. Реализация Keyset (Seek-based) pagination. Разбор кейсов, когда Keyset pagination не стоит свеч
  • Heavy columns
  • Clob/Blob, @DynamicUpdate и bytecode enhancement для ленивой загрузки

Блок 2. Преодоление ограничений ORM: маппинг и выборки Цель: framework для типичных вызовов ORM/Hibernate

  • Pageable + Fetch Join
  • Мина замедленного действия (in-memory pagination), двухэтапная выборка и DTO-проекции
  • MultipleBagFetchException
  • Почему нельзя fetch нескольких коллекций, List → Set: плюсы и скрытые риски и альтернативы

Блок 3. Enterprise-кейсы: архитектура, надежность и big data Цель: разбор реальных enterprise проблем и решений

  • Soft Delete
  • Как выглядит правильная и производительная реализация Soft Delete в современных версиях Hibernate. Скрытые риски @SoftDelete
  • Gigantic Collections
  • Как жить, когда в @OneToMany могут быть сотни или даже тысячи элементов: почему обычные коллекции тут антипаттерн
  • Transactional Outbox
  • Доставка в Kafka/RabbitMQ без XA, polling publisher и очередь в БД
  • Хранение Иерархии в БД
  • Проверенные временем алгоритмы хранения графов и древовидных структур в БД. Adjacency List vs Materialized Path, Recursive CTE имаппинг в JPA
  • Multi-tenancy в 2026
  • Безопасная multi-tenancy архитектура. @TenantId в Hibernate 6, стратегии shared/separate schema/db, TenantResolver и безопасность сессии
Складчина создана 2 апреля 2026 г. · описание обновлено 23 апреля 2026 г.

Теги курса

Инструменты
2 963 ₽ 29 999 ₽