Mikä on Hibernate-kehys?
Hibernate on avoimen lähdekoodin objekti-relaatiokartoitus (ORM) -pohjainen Java-pysyvyyskehys. Se on ORM-kartoitustyökalu Java-ohjelmassa. Hibernate on suunniteltu vähentämään monimutkaisuutta kytkettäessä relaatiotietokanta Java: n kautta. Hibernate-kehys on suunniteltu kartoittamaan Java-objekteja olio-ohjelmoinnin toteuttamiseksi relaatiotietokannassa. Näin lepotila muodostaa yhteydet relaatiotietokantaan kyselyjen suorittamiseksi:
- Hibernate muodostaa yhteyden suoraan määritettyyn tietokantaan ja käyttää horrostilauskieltä (HQL) suorittamaan kyselyitä ja kartoittamaan kyselyn tulokset Java-objekteihin.
- Hibernate käyttää Hibernate configuration XML-tiedostoon asetettuja ominaisuuksia kartoittaaksesi kyselyn tulokset Java-objekteihin.
- Tietokantayhteys luodaan käyttämällä istuntoa, joka auttaa tallentamaan ja noutamaan pysyvän Java-objektin.
- Istunto luodaan istunnon tehdasrajapinnalla. Ihannetapauksessa tietokantaa kohti tulisi olla vain yksi istunto tehdas.
Hibernaatin ja JDBC: n vertailu
Tässä on vertailutaulukko, joka näyttää hibernaatin ja JDBC: n vertailun:
Lepotila | JDBC |
Hibernate sisältää betoniluokkia, jotka tarjoavat kattilalevyn logiikan. | JDBC tarjoaa vain rajapintoja ja abstrakteja luokkia. |
Kaikkia lepotilan heittämiä poikkeuksia ei ole valittu. | Kaikki JDBC: n luokat heittävät tarkistetut poikkeukset. |
Se ei vaadi lisäresurssien hallintaa ja tekee sen sisäisesti. | Se vaatii enemmän resurssien hallintaa, kuten resurssien avaamista ja sulkemista. |
Tallentaa Java-esineitä suoraan. | Se ei voi tallentaa esineitä suoraan. |
Tukee tietokannasta riippumattomia kyselyitä. | Tukee tietokantakohtaisia kyselyitä. |
Tukee välimuistia. | Se ei tue välimuistiin tallentamista. |
Tue laiskaa lastausta. | Se ei tue laiskaa lataamista. |
Hibernate-arkkitehtuuri
Hibernate seuraa kerrosarkkitehtuuria ja siinä on seuraavat tasot:
- Java-sovellustaso
- Hibernaattikerros
- Taustan API-kerros
- Tietokantakerros
Hibernate-kerros sisältää seuraavat komponentit, jotka ovat seuraavat:
1. Hibernate Configuration Object
Tämä on ensimmäinen objekti, joka on luotava tietokantayhteyden luomiseksi hibernaatin avulla. Se tulisi luoda parhaiten kerran, sovelluksen alustuksen aikana. Konfigurointiobjekti tarjoaa seuraavat:
- Tietokantayhteys: Tietokantayhteys muodostetaan yhdellä tai useammalla määritystiedostolla. Tiedostot ovat lepotilassa .ominaisuudet ja hibernate.cfg.xml.
- Kartoitus: Tämä luo kartoituksen Java-luokkien ja relaatiotietokantataulukoiden välillä.
2. Istunto tehdas
Vaiheessa 1 luodtua määritysobjektia käytetään istuntovalmistusobjektin luomiseen, joka tekee hibernatoidusta kokoonpanosta valmiita toimitetun asetustiedoston avulla ja antaa tapaa istuntoobjektin luomiseen. Koska istunto tehdas on raskas esine, se luodaan yleensä kerran sovelluksen aloitusvaiheen aikana. Tarvitaan useita istunto-tehdasobjekteja, jos yhteydet useisiin tietokantoihin on luotava. Istunto tehdas on myös lankavarma objekti.
3. Istunto
Istuntoobjekti muodostaa fyysisen yhteyden tietokantaan. Se on kevyt esine, ja se olisi luotava aina, kun vuorovaikutus tietokannan kanssa vaaditaan. Jos objekti on säilytettävä tai se on haettava, se voidaan tehdä vain istuntoobjektin avulla. Istuntoobjekti tulisi sulkea heti, kun vaadittu toimenpide on suoritettu, koska ne eivät ole langanpitäviä.
4. Kauppa
Se on valinnainen objekti ja edustaa tietokannan kanssa tehtyä työyksikköä. Tapahtumaobjekti varmistaa, että joko kaikkien toimintojen on suoritettava tai ketään niistä ei suoriteta. Se on yksisäikeinen ja lyhytaikainen esine.
5. Kyselyobjekti
Tämä objekti käyttää jäsenneltyä kyselykieltä (SQL) tai Hibernate Query Language (HQL) -sovellusta hakemaan tietoja tietokannasta ja pikaistamaan objekteja. Kyselyobjektia voidaan käyttää kyselystä palautetun tuotoksen rajoittamiseen, kyselyparametrien sitomiseen ja kyselyn suorittamiseen.
kyselyt
Täällä suoritamme joitain kyselyitä, jotka tekevät asiat selkeämmiksi. Tarkastellaan yksikön työntekijää, jonka luokka on rakennettu seuraavasti:
Koodi:
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 vaatii XML-tiedoston nimeltä hibernate.cfg.xml, joka näyttää seuraavalta:
Koodi:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create
Alla on koodi, joka osoittaa, kuinka lisäys ja haku tapahtuu tietokantaan hibernaatin avulla:
Koodi:
//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());
)
lähtö:
Työntekijällä, jolla on tunnus 1, on nimi Yash, palkka on 40000.
Työntekijällä, jolla on tunnus 2, on nimi Aman, palkka on 42000.
johtopäätös
Tässä artikkelissa on käsitelty hibernaattia yksityiskohtaisesti, sen arkkitehtuurista, vertailusta JDBC: hen ja koodiesimerkkeihin. Huomasimme myös, että horrostila on yksinkertainen ja tehokas tapa toimia vuorovaikutuksessa tietokannan kanssa.
Suositellut artikkelit
Tämä on opas Hibernate-kehykseen. Tässä keskustellaan hibernaatin ja JDBC: n arkkitehtuurista, komponenteista ja vertailusta koodiesimerkkien kanssa. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -
- Kehykset Java
- Mikä on testiautomaatiokehykset?
- HADOOP-kehys
- .Net Core vs.Net Framework
- 2D-grafiikka Java-versiossa
- Heitä vs heittää | 5 suosituinta eroa, jotka sinun pitäisi tietää