Какво е хибернаторна рамка?
Hibernate е обективна рамка за устойчивост на базата на отворени източници (ORM). Това е инструмент за картографиране на ORM в Java. Хибернацията е проектирана с необходимостта от намаляване на сложността при свързване на релационна база данни чрез java. Хибернативната рамка е предназначена за картографиране на обекти на Java за прилагане на обектно-ориентирано програмиране в релационната база данни. Ето как хибернацията се свързва към релационната база данни за изпълнение на заявки:
- Hibernate се свързва директно с посочената база данни и използва хибернатен език на заявките (HQL) за изпълнение на заявки и картографиране на резултатите от заявки към Java обекти.
- Hibernate използва свойства, зададени в XML файл за конфигурация на хибернация, за да картографира резултатите от заявките към обекти Java.
- Връзката с базата данни се създава с помощта на сесия, която помага за запазване и извличане на постоянния Java-обект.
- Сесията се създава с помощта на фабричния интерфейс на Session. В идеален случай трябва да има само една фабрика за сесия на база данни.
Сравнение на хибернация и JDBC
Ето таблица за сравнение, показваща сравнение между хибернация и JDBC:
Hibernate | JDBC |
Хибернацията съдържа конкретни класове, които осигуряват логика на котлоните. | JDBC предоставя само интерфейси и абстрактни класове. |
Всички изключения, хвърлени от хибернация, са отместени. | Всички класове в JDBC хвърлят проверени изключения. |
Тя не изисква повече управление на ресурсите и го прави вътрешно. | Тя изисква повече управление на ресурсите като отваряне и затваряне на ресурси. |
Съхранява директно обектите на Java. | Не може директно да съхранява обекти. |
Поддържа независими заявки от база данни. | Поддържа специфични за базата данни заявки. |
Поддържа кеширането. | Не поддържа кеширане. |
Подкрепа мързеливо зареждане. | Не поддържа мързеливо зареждане. |
Хибернална рамкова архитектура
Хибернацията следва слоестата архитектура и има следните слоеве:
- Java приложен слой
- Хибернален слой
- Backkend API слой
- Слой на базата данни
Хибернаторният слой съдържа следните компоненти, които са както следва:
1. Обект за конфигуриране на хибернация
Това е първият обект, който трябва да създаде, за да установи връзка с база данни, използвайки хибернация. Той трябва да бъде идеално създаден веднъж, по време на инициализация на приложението. Обектът за конфигурация осигурява следното:
- Връзка към база данни: Връзката с база данни се установява с помощта на един или повече конфигурационни файла. Файловете са в хибернация. Свойства и hibernate.cfg.xml.
- Картографиране: Това създава съпоставяне между java класове и релационни таблици от бази данни.
2. Фабрика за сесии
Конфигурационният обект, създаден в стъпка 1, се използва за създаване на фабричен обект на сесия, който прави готовността за хибернация конфигурация с помощта на предоставения конфигурационен файл и прави начин за създаване на обект на сесия. Тъй като фабриката за сесии е тежък обект, тя обикновено се създава веднъж по време на началната фаза на приложението. Има нужда от фабричен обект за няколко сесии, в случай че трябва да се установят връзки към множество бази данни. Също така фабриката на сесиите е обезопасен с конци.
3. Сесия
Обектът на сесията установява физическа връзка с базата данни. Това е лек обект и трябва да се създава всеки път, когато се изисква взаимодействие с базата данни. Ако даден обект трябва да бъде продължен или трябва да бъде извлечен, той може да бъде направен само с обект на сесия. Обектът на сесията трябва да бъде затворен веднага след приключване на необходимата операция, тъй като те не са обезопасени с резба.
4. Транзакция
Той е незадължителен обект и представлява единица работа, извършена с базата данни. Обектът на транзакцията гарантира, че или всички операции трябва да се изпълняват, или никоя от тях не трябва да се изпълнява. Това е еднонитов и краткотраен обект.
5. Обект на запитване
Този обект използва структуриран език на заявките (SQL) или Hibernate Query Language (HQL) за извличане на данни от базата данни и създаване на обекти. Обект на заявка може да се използва за ограничаване на изхода, върнат от заявката, обвързване на параметрите на заявката и изпълнение на заявката.
Заявки
Тук ще изпълним някои заявки, които ще направят нещата по-ясни. Нека разгледаме служител в предприятието с клас, структуриран като:
Код:
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
По-долу е кода, който показва как се вмъкват и извличат в базата данни с хибернация:
Код:
//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());
)
изход:
Служител с идентификатор 1 има Име Яш има заплата 40000.
Служител с идентификатор 2 има Име Аман има заплата 42000.
заключение
В тази статия сме разгледали подробно хибернацията, за нейната архитектура, сравнение с JDBC и примери за код. Също така отбелязахме, че хибернацията осигурява прост и ефикасен начин за взаимодействие с базата данни.
Препоръчителни статии
Това е ръководство за Рамката за хибернация. Тук обсъждаме архитектурата, компонентите и сравнението на хибернация и JDBC с кодови примери. Можете също да разгледате следните статии, за да научите повече -
- Рамки в Java
- Какво е тест рамки за автоматизация?
- Рамка за HADOOP
- .Net Core срещу .Net Framework
- 2D графика в Java
- Хвърли срещу Хвърли | Топ 5 разлики, които трябва да знаете