Co to jest Hibernacja Framework?
Hibernacja jest strukturą trwałości Java opartą na otwartych źródłach mapowania obiektowo-relacyjnego. Jest to narzędzie do mapowania ORM w Javie. Hibernacja została zaprojektowana z myślą o zmniejszeniu złożoności podczas łączenia relacyjnej bazy danych za pośrednictwem języka Java. Struktura Hibernacja służy do mapowania obiektów Java w celu implementacji programowania obiektowego w relacyjnej bazie danych. Oto jak hibernacja łączy się z relacyjną bazą danych w celu wykonywania zapytań:
- Hibernacja łączy się bezpośrednio z określoną bazą danych i używa języka zapytań hibernacji (HQL) do wykonywania zapytań i mapowania wyników zapytań na obiekty Java.
- Hibernacja używa właściwości ustawionych w pliku XML konfiguracji Hibernacja do mapowania wyników zapytania na obiekty Java.
- Połączenie z bazą danych jest tworzone za pomocą sesji, która pomaga w zapisywaniu i pobieraniu trwałego obiektu Java.
- Sesja jest tworzona przy użyciu interfejsu fabryki sesji. W idealnym przypadku na bazę danych powinna być tylko jedna fabryka sesji.
Porównanie Hibernacji i JDBC
Oto tabela porównawcza pokazująca porównanie między hibernacją a JDBC:
Hibernować | JDBC |
Hibernacja zawiera konkretne klasy, które zapewniają logikę płyty kotłowej. | JDBC zapewnia tylko interfejsy i klasy abstrakcyjne. |
Wszystkie wyjątki zgłaszane przez hibernację są odznaczone. | Wszystkie klasy w JDBC zgłaszają wyjątki. |
Nie wymaga więcej zarządzania zasobami i robi to wewnętrznie. | Wymaga to większego zarządzania zasobami, takiego jak otwieranie i zamykanie zasobów. |
Przechowuje bezpośrednio obiekty Java. | Nie może bezpośrednio przechowywać obiektów. |
Obsługuje zapytania niezależne od bazy danych. | Obsługuje zapytania specyficzne dla bazy danych. |
Obsługuje buforowanie. | Nie obsługuje buforowania. |
Wspieraj leniwe ładowanie. | Nie obsługuje leniwego ładowania. |
Hibernacja architektury ramowej
Hibernacja jest zgodna z architekturą warstwową i ma następujące warstwy:
- Warstwa aplikacji Java
- Warstwa hibernacji
- Warstwa interfejsu API zaplecza
- Warstwa bazy danych
Warstwa hibernacji zawiera następujące składniki:
1. Obiekt konfiguracji hibernacji
Jest to pierwszy obiekt, który należy utworzyć, aby nawiązać połączenie z bazą danych za pomocą hibernacji. Idealnie powinien zostać utworzony raz podczas inicjalizacji aplikacji. Obiekt konfiguracji zapewnia:
- Połączenie z bazą danych: Połączenie z bazą danych jest ustanawiane przy użyciu jednego lub więcej plików konfiguracyjnych. Pliki są hibernowane .properties i hibernacja.cfg.xml.
- Mapowanie: tworzy mapowanie między klasami Java a tabelami relacyjnych baz danych.
2. Fabryka sesji
Obiekt konfiguracyjny utworzony w kroku 1 służy do utworzenia obiektu fabryki sesji, który przygotowuje konfigurację hibernacji przy użyciu dostarczonego pliku konfiguracyjnego i umożliwia utworzenie obiektu sesji. Ponieważ fabryka sesji jest ciężkim obiektem, zwykle jest tworzona raz podczas początkowej fazy aplikacji. Istnieje zapotrzebowanie na obiekt fabryki wielu sesji na wypadek konieczności nawiązania połączeń z wieloma bazami danych. Ponadto fabryka sesji jest obiektem bezpiecznym dla wątków.
3. Sesja
Obiekt sesji ustanawia fizyczne połączenie z bazą danych. Jest to lekki obiekt i powinien być tworzony za każdym razem, gdy wymagana jest interakcja z bazą danych. Jeśli obiekt wymaga utrwalenia lub pobrania, można to zrobić tylko przy użyciu obiektu sesji. Obiekt sesji powinien zostać zamknięty zaraz po zakończeniu wymaganej operacji, ponieważ nie jest bezpieczny dla wątków.
4. Transakcja
Jest to obiekt opcjonalny i reprezentuje jednostkę pracy wykonaną z bazą danych. Obiekt transakcji zapewnia, że albo wszystkie operacje muszą zostać wykonane, albo żadna z nich nie musi zostać wykonana. Jest to jednowątkowy i krótkotrwały obiekt.
5. Obiekt zapytania
Ten obiekt używa strukturalnego języka zapytań (SQL) lub Hibernate Query Language (HQL) do pobierania danych z bazy danych i tworzenia instancji obiektów. Obiekt zapytania można wykorzystać do ograniczenia wyników zwracanych z zapytania, powiązania parametrów zapytania i wykonania zapytania.
Zapytania
Tutaj wykonamy kilka zapytań, które wyjaśnią sprawę. Rozważmy pracownika podmiotu, którego klasa ma strukturę:
Kod:
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
)
Hibernacja wymaga pliku XML o nazwie hibernacja.cfg.xml, który wygląda następująco:
Kod:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create
Poniżej znajduje się kod pokazujący, w jaki sposób wstawianie i pobieranie odbywa się w bazie danych przy użyciu hibernacji:
Kod:
//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());
)
Wynik:
Pracownik o identyfikatorze 1 ma nazwisko Yash, a jego wynagrodzenie wynosi 40000.
Pracownik o identyfikatorze 2 ma imię Aman, a jego wynagrodzenie wynosi 42000.
Wniosek
W tym artykule szczegółowo omówiliśmy hibernację, dotyczącą jej architektury, porównania z JDBC i przykładów kodu. Zauważyliśmy również, że hibernacja zapewnia prosty i wydajny sposób interakcji z bazą danych.
Polecane artykuły
Jest to przewodnik po Hibernacji Framework. Tutaj omawiamy architekturę, komponenty i porównanie hibernacji i JDBC z przykładami kodu. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej -
- Frameworki w Javie
- Co to są ramy automatyzacji testów?
- HADOOP Framework
- .Net Core vs. .Net Framework
- Grafika 2D w Javie
- Rzut vs Rzuty | 5 najważniejszych różnic, które powinieneś znać