10 июня 2022 2067
Это вторая часть нашей серии статей об объектно-реляционном отображении с помощью JPA, Hibernate и Spring Data JPA. На этот раз мы рассмотрим вопрос об обеспечении постоянного хранения (персистентности) с помощью JPA.
Постоянное хранение данных с помощью JPA

Приложение JPA

Сегодня мы напишем приложение JPA для сохранения записи в базе данных и ее извлечения. А сделаем это на машине, на которой выполняется код, установлены MySQL Release 8.0 и база данных с именем CSCS.

Начнем с настройки JPA, Hibernate и других необходимых зависимостей. Исходный код контролируется Apache Maven. Мы декларируем следующие зависимости:


Листинг 1. Зависимости Maven от Hibernate, JUnit Jupiter и MySQL:

JPA скриншот №1

 

Модуль hibernate-entitymanager содержит транзитивные зависимости от других модулей, которые нам понадобятся, таких как hibernate-core заглушки интерфейса JPA.

Нам потребуется зависимость junit-jupiter-engine для выполнения тестов JUnit 5, а также зависимость mysql-connector-java, официальный драйвер JDBC для MySQL.

Вставляем в наш код блок постоянного хранения. Он содержит параметры настройки, в том числе провайдера персистентности, сведения о подключаемой базе данных, классы сущностей, используемый диалект SQL, учетные данные, форматирование SQL и др. Для приложений JPA требуется один или несколько блоков постоянного хранения.

 

Блок постоянного хранения

Файл persistence.xml находится в resources/META-INF/. Его содержимое выглядит следующим образом:


Листинг 2. Файл конфигурации persistence.xml

JPA скриншот №2.png


  • Поскольку JPA — это только спецификация, нам необходимо указать связанную с вендором реализацию PersistenceProvider для API. Определяемая нами персистентность поддерживается провайдером Hibernate. #1
  • Указываем свойства JDBC properties - драйвер #2, URL базы данных #3, имя пользователя #4 и пароль #5 для доступа. На машине, на которой выполняются программы, установлена база данных MySQL 8, и для доступа используются учетные данные из файла persistence.xml.
  • Диалект Hibernate — MySQL8 #6, так как мы будем взаимодействовать с базой данных MySQL Release 8.0.
  • Каждый раз, когда выполняется программа, база данных создается заново с нуля #7. Это идеально для автоматизированного тестирования, когда нам для запуска каждого теста нужна чистая база данных.

 

Персистентный класс

Реализуемое приложение имеет персистентный класс Item:



Листинг 3. Класс Item

JPA скриншот №3.png


  • Для персистентных классов необходимо использовать аннотацию @Entity #1, чтобы указать, что они соответствуют таблице базы данных. Если имя таблицы не указано, этот класс будет по умолчанию отображаться на таблицу с именем ITEM.
  • Для персистентных классов необходимо использовать аннотацию @Id #2, чтобы указать соответствие первичному ключу таблицы базы данных. Этот атрибут будет отображаться на столбец ID.
  • Аннотация @GeneratedValue указывает на автоматическую генерацию первичных ключей #3. Здесь можно использовать самые разные стратегии в зависимости от базы данных: поля идентификации, значения, полученные от последовательности, или таблица.
  • Атрибуты будут отображаться в столбцы таблицы. Если имя столбца не указано, атрибут info #4 будет по умолчанию отображаться в столбец с именем INFO.


Сохранение и извлечение записей

Давайте сохраним новую запись в базу данных.

 

Листинг 4. Класс ItemJPATest

JPA скриншот №4.png


  • Для доступа к базе данных #1 нам нужна фабрика EntityManagerFactory. Эта фабрика соответствует блоку постоянного хранения, который мы определили ранее.
  • Создаем EntityManager и запускаем новую сессию базы данных #2.
  • Получаем доступ к API для стандартных транзакций и начинаем транзакцию #3.
  • Создаем новый экземпляр класса Item и устанавливаем его свойство info #4.
  • Экземпляр класса во временном состоянии становится персистентным на стороне контекста персистентности #5.
  • Подтверждаем транзакцию #6. Теперь в таблицу ITEM добавлен новый ряд. Доступ к базе данных должен быть транзакционным, даже если она только для чтения.
  • После создания EntityManager его необходимо закрыть #7.
  • После создания EntityManagerFactory его необходимо закрыть #8.
  • В приложении JPA нет кода SQL и не используется JDBC. В коде Java нет операций CRUD (create, read, update, delete), но можно работать объектно-ориентированным способом с классами, объектами и методами. Перевод на каждый диалект SQL осуществляется посредством объектно-реляционного отображения (ORM), которое также используется для переносимости.

Интересно и программирование с помощью Java или хотите прокачать свои навыки? Регистрируйтесь на наши тренинги и получите скидку 10% для всех физлиц!

 



Последние статьи в блоге

Чему нас учит ИИ: как стать идеальным сотрудником

Сейчас чаще говорят об этике использования ИИ — как не получить плагиат или не доверить слишком много, но при этом редко задумываются о другой стороне медали: этична ли наша работа?

Новости
12 сентября 2025

Как ИИ действительно влияет на продуктивность разработчика: неожиданные выводы из исследований

За последние пару лет у многих разработчиков в редакторах и IDE поселились новые «напарники» — всевозможные ИИ-инструменты. Обещания были впечатляющие: меньше рутины, быстрее релизы, код пишется почти сам. Но когда первые восторги улеглись и появились системные исследования, стало ясно: эффект от ИИ далеко не такой однозначный. Где-то он действительно ускоряет работу команд на 20%, а где-то, наоборот, тормозит опытных инженеров. И вот парадокс: даже там, где выигрыш в скорости очевиден, бизнес не всегда чувствует, что проекты двигаются быстрее.

Новости
08 сентября 2025

Сквозная логика: от бизнес-процесса к реализации без потерь

Главный принцип работы с проектной документацией — поддерживать её связность и актуальность. Любая, даже самая детальная схема (BPMN, Use Case, C4), мгновенно теряет ценность, если она конфликтует с другой. Узнаёте? Сначала все силы бросают на «личный кабинет», но после пары спринтов главным внезапно становятся «возвраты». В результате возникает опасный разрыв: цели проекта, реализуемый функционал и схемы, которые должны их описывать, живут своей жизнью. Документация превращается в «мёртвые зоны», которые больше не отражают реальность.

29 августа 2025

Заказная разработка ПО в IBS: безопасная разработка и доставка

В этой статье начальник отдела DevOps компании IBS Артур Галеев расскажет об опыте внедрения принципов безопасной разработки, используемых инструментах и нормативных актах, на которые стоит опираться.

Новости
26 августа 2025

Сертификация ИТ-специалистов: точная оценка ваших компетенций

В ИТ-мире важно не просто обладать знаниями, но и четко понимать свой реальный уровень владения теми или иными навыками.

Новости
22 августа 2025

Группа компаний IBS запускает национальную сертификацию для бизнес-аналитиков

Центр сертификации IBS запускает новую систему оценки квалификации бизнес-аналитиков, которая сочетает международные стандарты c особенностями российского рынка. Программа ориентирована на теоретическую базу и прикладные навыки, необходимые в работе бизнес-аналитика в современных ИТ- и цифровых проектах.

Жизнь компании
20 августа 2025

От разработчика к тренеру: как превратить экспертизу в стабильный доход

Часто к преподаванию переходят после достижения «карьерного потолка»: на уровне сеньора процессы отлажены, и новые вызовы исчезают. Однако вместо того чтобы долго преподавать за символическую плату, можно сосредоточиться на создании системного заработка. Разберём реальные способы: от коучинга до запуска курсов.

Новости
13 августа 2025

Установка и настройка брокера сообщений Kafka на Windows

Цель задания: научиться устанавливать и настраивать Apache Kafka на операционной системе Windows, а также выполнять базовые операции с топиками и сообщениями.

21 июля 2025

Почему Python? Полный разбор Python vs Java в ML

«Когда 9 из 10 курсов по машинному обучению используют Python — это не случайность. Это результат десятилетия эволюции инструментов, сообщества и образовательной экосистемы».

21 июля 2025

Что должен знать и уметь архитектор ПО в 2025 году

Представьте профессию, в которой нужно одновременно мыслить как инженер, говорить как консультант и чувствовать бизнес как продакт. Архитектор ПО — это не просто старший разработчик с модным названием должности, а человек, который соединяет технологии, людей и цели в устойчивую, масштабируемую систему. Но какими навыками он должен владеть сегодня, чтобы быть действительно востребованным?

21 июля 2025

Памятка по документированию архитектурных решений

Отсутствие качественного архитектурного описания в сложных ИТ-проектах создает серьезные риски: фрагментированное понимание системы, накопление «архитектурного долга», трудности интеграции, масштабирования и онбординга. Это ведет к срывам сроков, перерасходу бюджета, снижению качества и росту затрат на поддержку, подвергая проект риску неоптимальных решений и критических уязвимостей.

Новости
18 июля 2025

Летняя акция: учитесь онлайн с выгодой, не выходя из отпуска! До конца августа второй курс со скидкой 50%

Проведите лето с пользой для карьеры – второй курс со скидкой 50%!

09 июля 2025

5 курсов июля со скидкой 30%

Друзья, у нас остались последние места на курсах, которые стартуют в июле. Сейчас есть возможность записаться на обучение со скидкой 30%!

Новости
04 июля 2025

Карьерный трек аналитика: от базы к экспертизе

Системные и бизнес-аналитики аналитики играют ключевую роль в digital-развитии продуктов. Эти специалисты выступают связующим звеном между бизнес-задачами и техническими решениями, обеспечивая эффективную коммуникацию между заинтересованными сторонами. Рассмотрим карьерные пути в аналитике, актуальные требования рынка и перспективы профессионального роста.

27 июня 2025

Почему именно сейчас стоит учиться на бизнес-аналитика уровня Middle. «Руководство BABOK» в подарок участникам программы!

Вы в ИТ, вам за 30. Вроде бы всё хорошо — есть работа, скиллы, стабильность. Но в воздухе — тревожность. Проекты замораживаются. Бизнес урезает бюджеты. От ИТ ждут не просто задач, а конкретного влияния на прибыль.

25 июня 2025

Уничтожит ли ИИ-генератор кода профессию разработчика?

С появлением ИИ-инструментов, а также в связи недавним анонсом Canva Code, который генерирует код за пару кликов, многие задумались: не станут ли такие инструмент угрозой для разработчиков? Давайте разберемся, есть ли здесь реальные риски, или это все же преувеличения.

23 июня 2025

Проектное резюме консультанта 1С: карьерный инструмент, чтобы выделиться среди других кандидатов

Рассказываем о продвинутой альтернативе привычного резюме для консультантов 1C и других специалистов с проектной занятостью.

Новости
19 июня 2025

Выбор карьеры: Менеджер бизнес-процессов или Бизнес-аналитик уровня Middle?

В мире цифровой трансформации пути развития аналитиков и менеджеров проектов все чаще расходятся: кому-то ближе работа с требованиями и API, а кому-то — выстраивание системной эффективности на уровне всей компании. Какой путь выбрать лично вам?

Новости
18 июня 2025

В Учебном центре IBS планируется запуск курсов по продуктам TData

Читайте о стратегическом соглашении TData и IBS и наших новых курсах

11 июня 2025

Компетенции бизнес-аналитиков: Junior и Middle в сравнении

В условиях динамично развивающейся ИТ-индустрии важно чётко понимать, какие навыки и знания необходимы для успешной работы на каждом этапе карьерного пути. Сегодня обсудим разницу в компетенциях ИТ бизнес-аналитиков уровней Junior и Middle. Если вы только начинаете свой путь в ИТ бизнес-анализе или, наоборот, уже обладаете некоторым опытом, этот материал поможет вам понять, какие навыки необходимы на каждом уровне и как развиваться дальше.

Новости
05 июня 2025

Не нашли, что искали? — Просто напишите, и мы поможем

Корпоративное обучение Оценка персонала Сертификация О нас Стань тренером Блог
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.