Kaj je sistem hibernacije?
Hibernate je odprtokodni objektni obstojni okvir, ki temelji na odprtem izvoru (ORM). Je orodje za kartiranje ORM v javi. Hibernacija je zasnovana s potrebo po zmanjšanju zahtevnosti med povezovanjem relacijske baze podatkov preko jave. Hibernacijski okvir je zasnovan za preslikavo java predmetov za izvajanje objektno usmerjenega programiranja v relacijski bazi podatkov. Tako se hibernacija poveže z relacijsko bazo podatkov za izvajanje poizvedb:
- Hibernate se neposredno poveže z določeno bazo podatkov in uporablja hibernaten jezik poizvedb (HQL) za izvajanje poizvedb in preslikavanje rezultatov poizvedb v java objekte.
- Hibernate uporablja lastnosti, nastavljene v datoteki XML za konfiguracijo hibernacije, za preslikavo rezultatov poizvedb na predmete java.
- Povezava z bazo podatkov je ustvarjena s pomočjo seje, ki pomaga pri shranjevanju in pridobivanju obstojnega java predmeta.
- Seja je ustvarjena s tovarniškim vmesnikom Session. V idealnem primeru bi morala biti samo ena tovarna sej na bazo podatkov.
Primerjava hibernacije in JDBC
Tu je primerjalna tabela, ki prikazuje primerjavo med hibernacijo in JDBC:
Prezimuje | JDBC |
Hibernacija vsebuje konkretne razrede, ki zagotavljajo logiko kotlovne plošče. | JDBC ponuja samo vmesnike in abstraktne razrede. |
Vse izjeme, ki jih vrže prezimovanje, niso preverjene. | Vsi razredi v JDBC metajo preverjene izjeme. |
Ne potrebuje več upravljanja virov in interno. | Zahteva več upravljanja virov, kot je odpiranje in zapiranje virov. |
Neposredno shranjuje java predmete. | Ne more neposredno shranjevati predmetov. |
Podpira neodvisne poizvedbe baze podatkov. | Podpira poizvedbe glede baze podatkov. |
Podpira predvajanje. | Ne podpira predpomnjenja. |
Podpora leno nalaganje. | Ne podpira lenega nalaganja. |
Hibernacijska okvirna arhitektura
Hibernacija sledi slojeviti arhitekturi in ima naslednje sloje:
- Java-sloj aplikacije
- Zimbernatna plast
- Nadomestni API API
- Sloj baze podatkov
Zimbernatna plast vsebuje naslednje sestavne dele:
1. Predmet konfiguracije mirovanja
To je prvi predmet, ki ga je treba ustvariti, da vzpostavi povezavo z bazo podatkov v mirovanju. Idealno bi moralo biti ustvarjeno enkrat med inicializacijo aplikacije. Konfiguracijski objekt nudi naslednje:
- Povezava z bazo podatkov: Povezava z bazo podatkov se vzpostavi z eno ali več konfiguracijskih datotek. Datoteke so hibernirane .properties in hibernate.cfg.xml.
- Preslikava: S tem se ustvari preslikava med razredi java in tabelami relacijskih baz podatkov.
2. Tovarna seje
Konfiguracijski objekt, ustvarjen v koraku 1, se uporablja za ustvarjanje tovarniškega seje seje, ki konfiguracijo mirovanja pripravi s pomočjo podane konfiguracijske datoteke in omogoči ustvarjanje predmeta seje. Ker je tovarna sej težek predmet, jo običajno ustvarite enkrat v začetni fazi aplikacije. Če je treba vzpostaviti povezave z več bazami podatkov, potrebujete več tovarniških tovarniških sej. Tovarna sej je tudi predmet, ki je varen na nit.
3. zasedanje
Objekt seje vzpostavi fizično povezavo z bazo podatkov. Je lahek predmet in ga je treba ustvariti vsakič, ko je potrebna interakcija z bazo podatkov. Če je treba objekt obdržati ali ga je treba ponovno pridobiti, lahko to storite le z uporabo predmeta seje. Predmet seje je treba zapreti takoj, ko je končana zahtevana operacija, ker ne varuje z navojem.
4. Transakcija
Je izbirni predmet in predstavlja enoto dela, opravljenega z bazo podatkov. Predmet transakcije zagotavlja, da se morajo izvajati vse operacije ali pa nobena od njih ne sme biti izvedena. Je enojni in kratkotrajni objekt.
5. Poizvedbeni predmet
Ta objekt uporablja strukturiran poizvedbeni jezik (SQL) ali hibernacijski poizvedbeni jezik (HQL) za pridobivanje podatkov iz baze in instanciranja predmetov. Objekt poizvedbe lahko uporabite za omejitev izhoda, vrnjenega iz poizvedbe, vezavo parametrov poizvedbe in izvedbo poizvedbe.
Poizvedbe
Tu bomo izvedli nekaj poizvedb, s katerimi bodo stvari bolj jasne. Upoštevajmo zaposlenega v entiteti, ki ima razred strukturiran kot:
Koda:
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
)
Hibernacija zahteva datoteko XML, imenovano hibernate.cfg.xml, ki izgleda kot:
Koda:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create
Spodaj je koda, ki prikazuje, kako poteka vstavljanje in iskanje v bazo podatkov z uporabo hibernacije:
Koda:
//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());
)
Izhod:
Zaposleni z ID 1 ima Name Yash plačo 40000.
Zaposleni z ID 2 ima ime Aman 42000 plače.
Zaključek
V tem članku smo podrobno opisali prezimovanje, njegovo arhitekturo, primerjavo z JDBC in primeri kod. Opazili smo tudi, da mirovanje omogoča preprost in učinkovit način za interakcijo z bazo podatkov.
Priporočeni članki
To je vodnik po stanju hibernacije. Tukaj razpravljamo o arhitekturi, komponentah in primerjavi hibernacije in JDBC s primeri kod. Če želite izvedeti več, si oglejte tudi naslednje članke -
- Okviri na Javi
- Kaj so okviri testiranja za avtomatizacijo?
- Okvir HADOOP
- .Net Core proti .Net Framework
- 2D grafika na Javi
- Vrzi proti metanju | Top 5 razlik, ki bi jih morali vedeti