10 июня 2022 1914
Это вторая часть нашей серии статей об объектно-реляционном отображении с помощью 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% для всех физлиц!

 



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

Выгодный май — на курсы залетай!

Друзья, спешим поделиться отличной новостью — вы можете получить скидки до 40% на наши популярные курсы. Это отличная возможность улучшить навыки и инвестировать в профессиональное развитие по более выгодной цене. Выбирайте направление и подавайте заявку прямо сейчас!

05 мая 2025

Кейс: кастомизация курса по Jira

Кейс по проведению кастомизированного курса «Основы Jira» для крупной российской компании, занимающейся производством цифровой техники.

05 мая 2025

Зачем специалистам по 1С изучать системный анализ и архитектуру ПО

Как системный анализ и архитектура ПО помогают эффективнее работать в 1С.

29 апреля 2025

Банка Nutella, IT, ESG — что общего?

Когда вы читали этикетку на продукте не из-за состава, а из-за ESG-маркировки?

25 апреля 2025

Каковы плюсы и минусы монолитной и микросервисной архитектуры при разработке ИТ-продуктов?

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

25 апреля 2025

Станьте архитектором ПО с выгодой! Только в апреле сэкономьте 20 000 ₽ и получите новый модуль по микросервисам в подарок

24 апреля стартует обучение на комплексной программе «Архитектор ПО. Путь к мастерству в проектировании систем»*.

14 апреля 2025

Архитектурные ошибки в корпоративных системах, которые могут создать проблемы в долгосрочной перспективе

В основе любой информационной системы — сложная структура. Спроектировать ее не легче, чем построить дом. Какие ошибки можно допустить при планировании ИТ-архитектуры, и в чем их основные причины? К чему они могут привести в долгосрочной перспективе и как этого избежать? Рассказывает Михаил Рощин, заместитель директора отделения управления проектами и архитектуры IBS.

Новости
10 апреля 2025

Кейс: Интенсив по управлению проектами для промышленной компании

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

27 марта 2025

Кейс: Обучение сотрудников крупной компании работе с ClickHouse

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

19 марта 2025

Платформа сертификации IBS получила аккредитацию АПКИТ

Ассоциация предприятий компьютерных и информационных технологий (АПКИТ) приняла новый регламент сертификации ИТ-специалистов.

Новости
10 марта 2025

Специальные акции на учебные программы

У нас отличная новость для всех, кто стремится развивать свои навыки в мире ИТ.

06 марта 2025

Как остановить спам-атаку

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

06 марта 2025

Учебный центр IBS подписал партнерское соглашение с ООО «РусБИТех-Астра», разработчиком российской операционной системы Astra Linux.

Теперь мы можем проводить авторизованное обучение по работе с Astra Linux для специалистов в области информационной безопасности.

17 февраля 2025

Двойная выгода: покупай один курс — получай второй за 50% стоимости!

Воспользуйтесь возможностью изучить более глубокие аспекты одной области — например, при покупке курса по Java, архитектуре ПО, управлению проектами, системному и бизнес-анализу, тестированию ПО и Big Data вы можете получить второй курс этой же тематики за полцены! Не упустите шанс развить свои навыки и поднять свою карьеру на новый уровень. 

29 января 2025

Сертификация преподавателя Java-разработки для крупного провайдера ИТ-обучения

Подтверждение квалификации значимо не только для ИТ-специалистов, работающих в сфере коммерческой разработки, но и для преподавателей, обучающих будущих экспертов в этой области. Делимся историей одного из преподавателей крупного провайдера ИТ-курсов, который успешно прошел Java-сертификацию.

Новости
21 января 2025

Системный аналитик 100 lvl — дорожная карта развития

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

23 декабря 2024

Платформа сертификации IBS признана лучшим digital-решением для корпоративного обучения

Центр сертификации IBS стал обладателем Гран-при премии «Смарт пирамида» — одной из самых престижных российских премий за достижения в области обучения и развития человеческого капитала.

20 декабря 2024

Учебный центр IBS получил сертификат ГОСТ Р ИСО 9001-2015

В октябре 2024 года Учебный центр IBS получил сертификат соответствия ГОСТ Р ИСО 9001-2015. Это важное достижение подтверждает, что мы придерживаемся высоких стандартов качества и результативно управляем образовательными процессами организации.

19 декабря 2024

9 курсов со скидкой до 50%

Друзья, в январе стартует 9 курсов, обучение на которых можно купить со скидкой до 50%*! 

15 декабря 2024

8 заблуждений про тестирование

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

15 декабря 2024

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

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