Hibernate Framework - Полное руководство по Hibernate Framework

Содержание:

Anonim

Что такое Hibernate Framework?

Hibernate - это основанная на открытых источниках объектно-реляционная картография (ORM), основанная на постоянном функционале Java Это инструмент отображения ORM в Java. Hibernate разработан с учетом необходимости снижения сложности при подключении реляционной базы данных через Java. Каркас Hibernate предназначен для отображения объектов Java для реализации объектно-ориентированного программирования в реляционной базе данных. Вот как hibernate подключается к реляционной базе данных для выполнения запросов:

  • Hibernate подключается напрямую к указанной базе данных и использует язык запросов Hibernate (HQL) для выполнения запросов и сопоставления результатов запросов с объектами Java.
  • Hibernate использует свойства, заданные в XML-файле конфигурации Hibernate, для сопоставления результатов запросов с объектами Java.
  • Соединение с базой данных создается с использованием сеанса, который помогает сохранять и извлекать постоянный объект Java.
  • Сеанс создается с использованием интерфейса фабрики сеансов. В идеальном случае в каждой базе данных должна быть только одна фабрика сеансов.

Сравнение Hibernate и JDBC

Вот таблица сравнения, показывающая сравнение между Hibernate и JDBC:

HibernateJDBC
Hibernate содержит конкретные классы, которые обеспечивают стандартную логику.JDBC предоставляет только интерфейсы и абстрактные классы.
Все исключения, выбрасываемые из спящего режима, не проверяются.Все классы в JDBC выдают проверенные исключения.
Это не требует большего управления ресурсами и делает это внутренне.Требуется больше управления ресурсами, такими как открытие и закрытие ресурсов.
Хранит Java-объекты напрямую.Он не может хранить объекты напрямую.
Поддерживает независимые от базы данных запросы.Поддерживает запросы к базе данных.
Поддерживает кеширование.Он не поддерживает кеширование.
Поддержка ленивой загрузки.Не поддерживает отложенную загрузку.

Архитектура Hibernate Framework

Hibernate следует многоуровневой архитектуре и имеет следующие уровни:

  • Уровень приложений Java
  • Спящий слой
  • Уровень Backend API
  • Уровень базы данных

Слой Hibernate содержит следующие компоненты:

1. Конфигурационный объект Hibernate

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

  • Подключение к базе данных: подключение к базе данных устанавливается с использованием одного или нескольких файлов конфигурации. Файлы находятся в спящем режиме .properties и hibernate.cfg.xml.
  • Сопоставление: это создает сопоставление между классами Java и таблицами реляционной базы данных.

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

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

3. Сессия

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

4. Сделка

Это необязательный объект, представляющий единицу работы, выполненную с базой данных. Объект транзакции гарантирует, что либо все операции должны выполняться, либо ни одна из них не должна выполняться. Это однопоточный и недолговечный объект.

5. Запрос объекта

Этот объект использует язык структурированных запросов (SQL) или Hibernate Query Language (HQL) для извлечения данных из базы данных и создания объектов. Объект Query может использоваться для ограничения вывода, возвращаемого запросом, связывания параметров запроса и выполнения запроса.

Запросы

Здесь мы выполним некоторые запросы, которые прояснят ситуацию. Давайте рассмотрим Entity Employee, имеющий класс, структурированный как:

Код:

Package com.edubca.hibernatetest;
@Entity
@Table(name = "EMPLOYEE")
public class Employee implements Serializable
(
private static final long serialVersionUID = -1798070786993123455L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "empID")
private Integer empID;
@Column(name = "NAME")
private String empName;
@Column(name = "SALARY")
private Integer salary;
//Getters and setters
)

Hibernate требует XML-файл с именем hibernate.cfg.xml, который выглядит следующим образом:

Код:


com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create

Ниже приведен код, демонстрирующий, как вставка и извлечение происходят в базе данных с помощью hibernate:

Код:

//Create Configuration object
Configuration con=new AnnotationConfiguration().configure(new File("hibernate.cgf.xml"));
// create session factory using configuration
SessionFactory fact=conf.buildSessionFactory();
//get session from session factory
Session session=fact.openSession();
//Instantiate and populate Employee entity object
Employee emp=new Employee();
emp.setempID(1);
emp.setempName(“Yash”);
emp.setSalary(40000);
Employee emp1=new Employee();
emp1.setempID(2);
emp1.setempName(“Aman”);
emp1.setSalary(42000);
//persist emp object
session.save(emp);
//persist emp1 object
session.save(emp1);
//retrieve data from database
Query query=session.createQuery(“from Employee”);
List list= query.list();
For(Employee e : list)(
System.out.println(“Employee with ID ” + e.getempID() + “ has Name ” + e.getempName() + “ has salary ” + e.getsalary());
)

Выход:

У сотрудника с ID 1 Имя Яша составляет 40000.
Сотрудник с ID 2 имеет имя Аман, оклад 42000.

Вывод

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

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

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

  1. Фреймворки на Java
  2. Что такое каркас автоматизации тестирования?
  3. HADOOP Framework
  4. .Net Core против .Net Framework
  5. 2D-графика в Java
  6. Бросок против бросков | 5 главных отличий, которые вы должны знать