TGViewer
Уютное сообщество джавистов Уютное сообщество джавистов @javaarchivebooks · 1.87K subscribers
Post #315 1.39K
От JDBC до Spring Data: часть 2

В этом посте расскажу про популярные модули Spring Data и подскажу важный нюанс при изучении Hibernate.

Spring Data JPA

Hibernate вызвал вау-эффект тем, что взял на себя маппинг и простейшие SQL запросы.

Spring Data JPA пошёл дальше и избавил разработчика от унылых конфигов и возни с сессиями, плюс генерирует более сложные SQL запросы.

Всё очень круто (без шуток), но есть нюанс.

Ванильный Hibernate подразумевает, что пользователь знаком с деталями реализации — умело работает с кэшами 1 и 2 уровня, различает persist/save/merge, использует нужные типы данных и тд.

А вот JPA определяет только интерфейс доступа к данным. Поэтому в Spring Data JPA многие хибернейт фичи не используются.

Пример — ленивая загрузка коллекций и кэш 1 уровня. Spring Data в общем случае при каждом обращении к репозиторию создаёт новую сессию. Кэширования в итоге нет, а при загрузке коллекций ловим эксепшн.

Кэш 2 уровня и EntityGraph поправят ситуацию, но это уже продвинутый уровень:) Недостаточно пользоваться абстракцией "репозиторий", надо знать и Hibernate, и как Spring использует Hibernate.

Практический совет — если что-то читаете по хибернейту, уточняйте, как это работает в Spring Data и работает ли вообще.

Для простых сервисов Spring Data JPA существенно упрощает жизнь. Для сложных тоже, но требует больше знаний.

Spring Data JDBC

— альтернатива Spring Data JPA. Под капотом у него JDBC без посредничества Hibernate.

Интерфейс такой же — пользователь работает с репозиторием и размечает классы аннотациями типа @Id или @Column.

JDBC проще, у него нет кэшей, ленивой загрузки, каскадных операций и автоматического сохранения. Код становится предсказуемым, но многие вещи нужно делать явно.

Отдельного внимания заслуживает работа с зависимыми сущностями в DDD стиле. А в этом докладе показан наглядный пример и больше различий Spring Data JPA/JDBC.

Важный момент! Не путайте две библиотеки:
🌸 Spring JDBC упрощает работу с соединениями. Запросы, маппинг сущностей, управление транзакциями пишет разработчик
🌹 Spring Data JDBC даёт следующий уровень абстрации — репозиторий. Работа c запросами, маппингом и транзациями упрощается за счёт аннотаций

MyBatis

часто упоминается как альтернатива Hibernate. Называет себя persistence framework, а не ORM, но занимается тем же — помогает писать меньше кода по перегону данных между БД и приложением.

Основное отличие MyBatis от хибернейта — все SQL-запросы пишутся явно, и внутри можно писать if и foreach блоки.

MyBatis в целом ничего, но редко встречается. Причины просты:
❌ Нет Spring Data модуля, только Spring Boot Starter. Писать руками нужно гораздо больше
❌ В MyBatis есть аннотации, но документация и большинство статей используют XML. Выглядит несовременно👨‍🦳

Итого

⭐️ Spring Data * берёт на себя конфиги, работу с сессиями, генерацию некоторых запросов
⭐️ Spring Data JPA упрощает работу с Hibernate
⭐️ Spring Data JDBC предлагает похожий интерфейс, но на основе JDBC
⭐️ MyBatis для тех, кто хочет чего-то другого

Что выбрать?

Функционально Spring Data JPA/JDBC и MyBatis похожи, но со своими нюансами. Адекватных и современных бенчмарков в интернете нет. Статьи вроде "Hibernate vs MyBatis" очень поверхностные, не тратьте на них время.

На практике выбор делается почти случайно. Что затащат в проект на старте, то и используется:)

#полезное
  • 👏 2
More from @javaarchivebooks
  1. Aug 17, 2026Уютное сообщество джавистов pinned «Java Работа - канал с вакансиями по Java. Если вы хоти…
  2. Aug 17, 2026Java Работа - канал с вакансиями по Java. Если вы хотите найти работу, то подписывайтесь н…
  3. Feb 26, 2026Java: быстрый старт Автор: Джейми Чан Год издания: 2021 #java #ru Скачать книгу
  4. Feb 19, 2026Java. Состояние языка и его перспективы Автор: Федор Урванов Год издания: 2023 #java #ru С…
  5. Sep 16, 2025Java: устранение проблем Автор: Лауренциу Спилкэ Год издания: 2023 #java #ru Скачать книгу
  6. Aug 30, 2025Mastering Secure Java Applications Авторы: Debopam Poddar, Joyanta Banerjee, Tarun Kumar C…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →