Рамка за хибернация - Пълно ръководство за хибернация на рамката

Съдържание:

Anonim

Какво е хибернаторна рамка?

Hibernate е обективна рамка за устойчивост на базата на отворени източници (ORM). Това е инструмент за картографиране на ORM в Java. Хибернацията е проектирана с необходимостта от намаляване на сложността при свързване на релационна база данни чрез java. Хибернативната рамка е предназначена за картографиране на обекти на Java за прилагане на обектно-ориентирано програмиране в релационната база данни. Ето как хибернацията се свързва към релационната база данни за изпълнение на заявки:

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

Сравнение на хибернация и JDBC

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

HibernateJDBC
Хибернацията съдържа конкретни класове, които осигуряват логика на котлоните.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 с кодови примери. Можете също да разгледате следните статии, за да научите повече -

  1. Рамки в Java
  2. Какво е тест рамки за автоматизация?
  3. Рамка за HADOOP
  4. .Net Core срещу .Net Framework
  5. 2D графика в Java
  6. Хвърли срещу Хвърли | Топ 5 разлики, които трябва да знаете