Конфигурация нативного интерфейса Hibernate

17.06.2022 1713
IBS Training Center Telegram
Подписывайтесь на наш канал в Telegram:
больше материалов экспертов, анонсы бесплатных вебинаров и задачки для IT-специалистов
Подписаться

Интерфейс Hibernate org.hibernate.SessionFactory является нативным соответствием JPA EntityManagerFactory.

Для настройки нативного интерфейса Hibernate можно использовать файл свойств Java hibernate.properties или XML файл hibernate.cfg.xml. Выбираем второй вариант, и для настройки будут доступны опции для базы данных и сессии. Этот XML файл обычно находится в папке src/main/resource or src/test/resource. Поскольку нам необходима информация для конфигурации Hibernate в тестах, выбираем второе альтернативное расположение.

Листинг 5. Файл конфигурации hibernate.cfg.xml



image (1).png

  • Мы используем теги, чтобы указать на то, что мы настраиваем Hibernate #1, а именно объект SessionFactory #2. SessionFactory — это интерфейс, и нам необходимо иметь один объект SessionFactory для взаимодействия с одной базой данных.
  • Указываем свойства JDBC - драйвер #3, URL базы данных #4, имя пользователя #5 и пароль #6 для доступа.
  • Мы ограничим число подключений, находящихся в режиме ожидания в пуле подключений базы данных Hibernate, до 50 #7.
  • Каждый раз, когда выполняется программа, база данных создается заново с нуля #8. Это идеально для автоматизированного тестирования, когда нам для запуска каждого теста нужна чистая база данных.
Сохраняем запись Item в базу данных, используя нативный интерфейс Hibernate.

Листинг 6. Класс ItemHibernateTest

image (1).png

  • Для создания SessionFactory необходимо создать Configuration #1, чтобы вызывать метод configure и добавить Item к аннотированному классу #2. Выполнение метода configure приведет к загрузке содержимого файла по умолчанию hibernate.cfg.xml.
  • Создаем и настраиваем реестр сервисов #3. Реестр ServiceRegistry содержит и контролирует сервисы, которым необходим доступ к SessionFactory
  • Создаем SessionFactory, используя созданные ранее конфигурацию и реестр сервисов #4.
  • Фабрика SessionFactory, созданная с помощью метода createSessionFactory, который мы определили ранее, передается в качестве аргумента на try with resources, когда SessionFactory реализует интерфейс AutoCloseable #5. Аналогичным образом мы начинаем новую сессию с базой данных, создав Сессию #6, которая также реализуетинтерфейс AutoCloseable . Это наш контекст для всех персистентных операций.
  • Получаем доступ к API для стандартных транзакций и начинаем транзакцию на этом потоке выполнения #7.
  • Создаем новый экземпляр класса Item и устанавливаем его свойство info #8.
  • Экземпляр класса во временном состоянии становится персистентным на стороне контекста персистентности #9.
  • Синхронизируем сессию с базой данных и закрываем текущую сессию при автоматическом подтверждении транзакции #10.
  • Как и в случае JPA, у нас нет кода SQL и не используется JDBC. В коде Java нет операций CRUD (create, read, update, delete), но можно работать объектно-ориентированным способом с классами, объектами и методами. Перевод на каждый диалект SQL осуществляется посредством объектно-реляционного отображения (ORM), которое также используется для переносимости.


Расскажи друзьям:

Как не пропустить самое интересное?
Подписывайтесь на наш ежемесячный дайджест!
Спасибо.
Вы подписаны на ежемесячный дайджест.
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.