Co je Hibernate Framework?
Hibernace je open-source objektově relační mapování (ORM) založené na perzistenci javy. Je to mapovací nástroj ORM v javě. Hibernace je navržena s cílem snížit složitost při připojování relační databáze pomocí Java. Rámec Hibernace je navržen tak, aby mapoval objekty Java a implementoval objektově orientované programování v relační databázi. Takto se hibernace připojí k relační databázi, aby mohla provádět dotazy:
- Hibernace se připojuje přímo k zadané databázi a používá hibernační dotazovací jazyk (HQL) k provádění dotazů a mapování výsledků dotazů na objekty Java.
- Hibernace používá vlastnosti nastavené v konfiguračním souboru Hibernate XML k mapování výsledků dotazu na objekty Java.
- Připojení k databázi je vytvořeno pomocí relace, která pomáhá při ukládání a načítání přetrvávajícího java objektu.
- Relace je vytvořena pomocí továrního rozhraní relace. V ideálním případě by měla existovat pouze jedna továrna relací na databázi.
Srovnání Hibernate a JDBC
Zde je srovnávací tabulka, která ukazuje srovnání hibernace a JDBC:
Přezimovat | JDBC |
Hibernace obsahuje konkrétní třídy, které poskytují logiku kotlové desky. | JDBC poskytuje pouze rozhraní a abstraktní třídy. |
Všechny výjimky vyvolané hibernací nejsou zaškrtnuty. | Všechny třídy v JDBC vyvolávají zaškrtnuté výjimky. |
Nevyžaduje více správy zdrojů a interně. | Vyžaduje to více správy zdrojů, jako je otevírání a zavírání zdrojů. |
Ukládá objekty Java přímo. | Nelze přímo ukládat objekty. |
Podporuje dotazy nezávislé na databázi. | Podporuje dotazy specifické pro databázi. |
Podporuje ukládání do mezipaměti. | Nepodporuje ukládání do mezipaměti. |
Podpora líného načítání. | Nepodporuje líné načítání. |
Hibernate Framework Architecture
Hibernace sleduje vrstvenou architekturu a má následující vrstvy:
- Vrstva aplikace Java
- Hibernační vrstva
- Backend API Layer
- Vrstva databáze
Hibernační vrstva obsahuje následující komponenty, které jsou následující:
1. Hibernační konfigurační objekt
Toto je první objekt, který je třeba vytvořit, aby bylo možné navázat připojení k databázi pomocí režimu spánku. V ideálním případě by měl být vytvořen jednou během inicializace aplikace. Objekt konfigurace poskytuje následující:
- Připojení k databázi: Připojení k databázi se vytvoří pomocí jednoho nebo více konfiguračních souborů. Soubory jsou hibernace .properties a hibernate.cfg.xml.
- Mapování: Vytvoří se mapování mezi třídami Java a tabulkami relačních databází.
2. Session Factory
Konfigurační objekt vytvořený v kroku 1 se používá k vytvoření továrního objektu relace, díky kterému je hibernační konfigurace připravena pomocí poskytnutého konfiguračního souboru a umožňuje vytvoření objektu relace. Protože továrna relace je těžký objekt, je obvykle vytvořena jednou během počáteční fáze aplikace. V případě, že je třeba navázat spojení s více databázemi, je potřeba tovární objekt s více relacemi. Továrna relace je také objektem bezpečným pro vlákna.
3. Zasedání
Objekt relace naváže fyzické spojení s databází. Je to lehký objekt a měl by být vytvořen pokaždé, když je vyžadována interakce s databází. Pokud je třeba objekt přetrvávat nebo je třeba jej získat, lze jej provést pouze pomocí objektu relace. Objekt relace by měl být uzavřen, jakmile je dokončena požadovaná operace, protože nejsou bezpečné pro podprocesy.
4. Transakce
Jedná se o volitelný objekt a představuje jednotku práce s databází. Transakční objekt zajišťuje, že všechny operace musí být provedeny nebo žádná z nich nesmí být provedena. Jedná se o objekt s jedním vláknem a krátkou životností.
5. Dotazovací objekt
Tento objekt používá k načtení dat z databáze a vytvoření instance objektů strukturovaný dotazovací jazyk (SQL) nebo Hibernate Query Language (HQL). Objekt Query lze použít k omezení výstupu vráceného z dotazu, navázat parametry dotazu a provést dotaz.
Dotazy
Zde provedeme několik dotazů, které objasní věci. Podívejme se na zaměstnance entity, který má třídu strukturovanou jako:
Kód:
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
)
Režim Hibernace vyžaduje soubor XML s názvem hibernate.cfg.xml, který vypadá takto:
Kód:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create
Níže je kód, který ukazuje, jak probíhá vkládání a načítání do databáze pomocí režimu spánku:
Kód:
//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());
)
Výstup:
Zaměstnanec s ID 1 má Jméno Yash má plat 40000.
Zaměstnanec s ID 2 má Jméno Aman má plat 42000.
Závěr
V tomto článku jsme podrobně popsali režim spánku, jeho architekturu, srovnání s JDBC a příklady kódu. Také jsme poznamenali, že režim hibernace poskytuje jednoduchý a efektivní způsob interakce s databází.
Doporučené články
Toto je průvodce Hibernate Frameworkem. Zde diskutujeme o architektuře, komponentách a porovnání hibernace a JDBC s příklady kódu. Další informace naleznete také v následujících článcích -
- Rámce v Javě
- Co je to Test Automation Frameworks?
- HADOOP Framework
- .Net Core vs .Net Framework
- 2D grafika v Javě
- Throw vs Throw | 5 hlavních rozdílů, které byste měli vědět