Что такое 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:
Hibernate | JDBC |
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 с примерами кода. Вы также можете посмотреть следующие статьи, чтобы узнать больше -
- Фреймворки на Java
- Что такое каркас автоматизации тестирования?
- HADOOP Framework
- .Net Core против .Net Framework
- 2D-графика в Java
- Бросок против бросков | 5 главных отличий, которые вы должны знать