Введение в архитектуру Hibernate

Прежде чем перейти к архитектуре Hibernate, давайте посмотрим, почему Hibernate появился на снимке и какую цель он решает для нас. Hibernate - это инструмент ORM (Object Relational Mapping) для языка программирования Java для разработки объектно-ориентированной логики персистентности, не зависящей от базы данных. Hibernate предоставляет уровень абстракции для извлечения и хранения данных в базе данных.

Почему Hibernate?

JDBC (Java Database Connectivity) зависит от базы данных. Точнее говоря, написание запросов для запуска из приложения с использованием JDBC зависит от того, с какой базой данных вы работаете. Если вы работаете с MySQL или Oracle, ваши запросы будут другими. Так что если в середине проекта вам нужно изменить базу данных, что также потребует изменения кода, и, конечно, мы этого не хотим. Принимая во внимание, что hibernate использует независимый от базы данных язык запросов Hibernate. Короче говоря, hibernate заботится о большей части того, что разработчик имел отношение к JDBC, например. Открытие соединения с БД, закрытие соединений, обработка различных исключений.

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

Архитектура гибернации

Основной концепцией любого ORM является замена написания специфичных для базы данных SQL-запросов манипулированием объектами.

Проще говоря, простыми словами,

  • вы создаете POJO (обычный старый объект Java)
  • присваивать значения полям с помощью сеттеров
  • сказать спящий, чтобы сохранить эти объекты

Hibernate отображает классы Java в таблицы базы данных (что также включает отображение типов данных Java в типы данных SQL).

Таким образом, устраняется необходимость преобразования полей Java в типы данных, поддерживаемые SQL. Hibernate делает это для вас.

Это также избавляет разработчика от боли при обработке набора результатов.

Java-приложение

При разработке логики персистентности нам необходимо воспользоваться поддержкой некоторых ресурсов в Java-приложении. Давайте посмотрим на эти ресурсы.

Сердце любого приложения Hibernate лежит в его конфигурации, которая выполняется с помощью:

  • Файл конфигурации
  • Картографический файл

Файл конфигурации Hibernate

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

Хотя Hibernate способен генерировать запросы к базе данных, мы можем указать диалект, чтобы помочь ему генерировать лучший SQL для требуемой базы данных.

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

Файл отображения спящего режима

Он содержит все определения отображения класса в таблицу. Каждому инструменту ORM нужен файл сопоставления. Мы используем следующие способы сообщить Hibernate, какое значение объекта должно храниться в каком столбце таблицы.

  • XML
  • Аннотации

Синтаксис XML-файла сопоставления весной,

Ниже показано, как мы аннотируем переменную экземпляра, которая должна быть сопоставлена ​​со столбцом строки в базе данных.

Доменный класс

Как мы знаем, Hibernate известен разработкой объектной логики персистентности. Таким образом, классом домена является POJO, который отображается на таблицу в базе данных.

конфигурация

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

  • Загрузите эти файлы.
  • Проверяет правильность и правильность этих файлов.
  • Создает в памяти метаданные этих двух файлов.
  • Вернуть объект, который содержит эти метаданные.

Фабрика сессий

Фабрика сеансов используется для создания объектов сеансов. Он создается объектом конфигурации. Он обеспечивает уровень абстракции, поэтому нам не нужно беспокоиться о том, как создается объект сеанса. Это потокобезопасный глобальный фабричный класс для создания сеансов. Используя объект конфигурации, мы получаем доступ к данным в памяти, созданным из файла конфигурации и отображения.

Оттуда он получает имя драйвера JDBC-свойств, URL-адрес источника данных, имя пользователя, пароль и т. Д. Используя эти свойства, он создает объекты подключения, представляющие подключение к базе данных.

Используя эти соединения, создается пул соединений. Вся информация из объекта конфигурации и пула соединений используется для создания и возврата объекта сеанса. Следовательно, объект фабрики сеанса - это тяжеловесный объект. Каждая фабрика сеансов сконфигурирована для работы с определенной базой данных, используя один из указанных диалектов Hibernate.

сессия

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

В инструменте ORM вы выполняете все операции, такие как INSERT, DELETE и UPDATE, используя объектно-ориентированную семантику, что означает, что вы больше не обращаетесь к таблицам, строкам и столбцам. Это сеансы работы, чтобы сделать все операции сохранения для вас.

Сделка

Транзакция - это недолговечный объект, который представляет собой единицу работы, такую ​​как сохранение или удаление объекта в таблице в базе данных. Он абстрагирует приложение от базовой транзакции, выполненной с использованием JDBC, JTA (Java Transaction API) и т. Д.

Внутренне, в спящем режиме с использованием JDBC, JTA, JNDI (Java Naming and Directory Interface) для генерации SQL-запросов для сконфигурированной базы данных.

Вывод

В этой статье мы рассмотрели, как многоуровневая архитектура hibernate помогает программисту работать с базой данных без необходимости знать детали базового API, такого как JDBC, JTA и JNDI. Мы узнали, как Hibernate облегчает нашу жизнь, обрабатывая большую часть стандартного кода, такого как открытие / закрытие соединения с базой данных. Надеюсь, это даст вам четкое представление об архитектуре Hibernate, которая поможет вам начать использовать Hibernate Framework в своих приложениях.

Рекомендуемые статьи

Это руководство по архитектуре Hibernate. Здесь мы обсуждаем многоуровневую архитектуру hibernate вместе с Java-приложением. Вы также можете посмотреть следующую статью, чтобы узнать больше -

  1. Что такое Hibernate?
  2. Hibernate Framework
  3. Hibernate Интервью Вопросы
  4. Что такое Java Hibernate?