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

Общение с базой данных связано с огромным количеством технологий — навскидку вспоминаем JDBC, JPA, Hibernate и Spring Data. Они тесно переплетены, и не всегда люди чётко понимают, что есть что и зачем нужно.

В ближайших постах разложу по полочкам основные технологии по работе с данными.

❓Почему всё так сложно? Почему нельзя сохранить всё как есть?

Приложение использует оперативную память и представляет данные в виде объектов. Можно работать с любым объектом в любой момент — чтение и запись происходят быстро. Минус оперативки — когда приложение завершается, память освобождается, и данные пропадают.

Чтобы данные пережили приложение, они записываются в постоянную память. Хранением и организацией данных занимается БД.

В оперативке данные лежат кое-как — где место нашлось, там объект и создаётся. В постоянной памяти данных много, всё упорядочено и оптимизировано. Поэтому модели данных в БД и приложении иногда отличаются.

А ещё БД — это отдельное приложение. В итоге для сохранения/извлечения данных нужна куча дополнительной работы:
🔸 открыть соединение
🔸 составить SQL запрос
🔸 передать в запросе данные из приложения
🔸 преобразовать ответ БД в java объект
🔸 закрыть соединение

JDBC

— стандартные java методы, которые выполняют все пункты выше. Все инструменты по работе с БД под капотом используют как раз JDBC.

Работа с соединениями и преобразование данных — утомительная работа. Поэтому и появляются библиотеки, облегчающие этот труд.

Spring JDBC

берёт на себя работу с соединениями. Разработчик всё так же составляет запросы, передаёт параметры и преобразует ответы в java объекты.

ORM

Object Relational Mapping — преобразование данных (mapping) из java объектов в сущности БД и обратно.

Формально, ORM — просто название процесса. В случае JDBC весь ОRМ разработчик делает вручную.

На практике под ORM подразумевают ORM библиотеку/фреймворк — какой-нибудь инструмент, который берёт на себя часть работы по запросам и преобразованию данных.

Hibernate

— самая популярная ORM библиотека. Составляет простые SQL запросы и преобразует данные. Упростил жизнь многим и заслужил их любовь❤️

В хибернейте не всё идеально:
▪️ Работа с соединениями (сессиями) остаётся на пользователе
▪️ Для корректной работы надо знать внутрянку (dirty session, как разруливаются отношения и тд).

Сложно не признать, что Hibernate великолепен. Ворвался на олимп ORM библиотек в 2001 году и до сих пор оттуда не слезает🏆

JPA

Сейчас большинство приложений базируются на спринге, но 10-15 лет назад приложения часто опирались на Java ЕЕ. В те года ORM Java ЕЕ выглядел сложно — для каждой сущности требовались несколько классов и кучка интерфейсов.

Hibernate выглядел привлекательно, но нельзя просто взять и добавить библиотеку в проект. Во вселенной Java EE всё работает через спецификации — стандартные интерфейсы.

Поэтому появилась новая спека по ORM — Java Persistence API или JPA. С небольшими отличиями почти полностью списана с хибернейта. Вскоре Hibernate подстроился под JPA и стал использоваться в Java EE.

Итого

⭐️ JDBC — базовое API по работе с БД
⭐️ ORM — преобразование данных между приложением и БД. На практике под “у нас на проекте ORM” имеют в виду, что используется ORM библиотека, например, Hibernate
⭐️ JPA — спецификация по ORM. Набор интерфейсов, аннотаций и описание, как всё должно работать. Не включает в себя конкретную реализацию
⭐️ Hibernate — популярная ORM библиотека, реализующая JPA

В следующем посте распишу вариации Spring Data, и почему материалы по хибернейт могут не соответствовать реальности.

#полезное
Oracle Using Entity Beans Sun Microsystems, Inc. is delivering Sun ONE e-commerce software and enterprise solutions that enable companies to compete successfully in the Net Economy.
  • 🔥 9
  • 👍 2
  • ❤ 1
  • 😁 1
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 →