Hibernate raamistik - Hibernate raamistiku täielik juhend

Lang L: none (table-of-contents):

Anonim

Mis on talveune raamistik?

Hibernate on avatud lähtekoodiga objektide-relatsioonide kaardistamise (ORM) põhine java püsivuse raamistik. See on javas ORM-i kaardistamise tööriist. Hibernate on loodud vajadusega vähendada keerukust, ühendades relatsiooniandmebaasi Java kaudu. Hibernate raamistik on mõeldud Java-objektide kaardistamiseks, et rakendada relatsiooniandmebaasis objektorienteeritud programmeerimist. Nii saab talvituma ühenduste loomine relatsiooniandmebaasiga päringute tegemiseks:

  • Hibernate loob ühenduse otse määratud andmebaasiga ja kasutab Java-objektide päringute tegemiseks ja päringutulemuste kaardistamiseks hibernate päringkeelt (HQL).
  • Hibernate kasutab hibernate configuration XML-failis seatud atribuute päringu tulemuste kaardistamiseks Java-objektidega.
  • Andmebaasiühendus luuakse seansi abil, mis aitab püsiva Java-objekti salvestada ja tuua.
  • Seanss luuakse seansi tehase liidese abil. Ideaalsel juhul peaks andmebaasi kohta olema ainult üks seansitehas.

Hibernate ja JDBC võrdlus

Siin on võrdlustabel, mis näitab talveune ja JDBC võrdlust:

HibernateJDBC
Hibernate sisaldab betoonklasse, mis tagavad katlamaja loogika.JDBC pakub ainult liideseid ja abstraktseid klasse.
Kõik talveunerežiimi erandid on märkimata.Kõik JDBC klassid kontrollivad erandeid.
See ei nõua rohkemat ressursside haldamist ja teeb seda sisemiselt.See nõuab rohkem ressursside haldamist, näiteks ressursside avamist ja sulgemist.
Salvestab java objekte otse.See ei saa objekte otse salvestada.
Toetab andmebaasist sõltumatuid päringuid.Toetab andmebaasispetsiifilisi päringuid.
Toetab vahemällu salvestamist.See ei toeta vahemällu salvestamist.
Toetage laiska laadimist.See ei toeta laiska laadimist.

Hibernate raamistikuarhitektuur

Hibernate järgib kihilist arhitektuuri ja sellel on järgmised kihid:

  • Java-rakenduste kiht
  • Hibernate kiht
  • Taustprogrammi API kiht
  • Andmebaasi kiht

Hibernate kiht sisaldab järgmisi komponente:

1. Hibernate konfiguratsiooniobjekt

See on esimene objekt, mis tuleb luua hibernatsiooni abil andmebaasi ühenduse loomiseks. Ideaalis tuleks see luua üks kord, rakenduse initsialiseerimise ajal. Konfiguratsiooniobjekt pakub järgmist:

  • Andmebaasiühendus: Andmebaasiühendus luuakse ühe või mitme konfiguratsioonifaili abil. Failid on talveune. Omadused ja hibernate.cfg.xml.
  • Kaardistamine: see loob java klasside ja relatsiooniliste andmebaaside tabelite vahelise kaardistamise.

2. Sessioonitehas

1. etapis loodud konfiguratsiooniobjekti kasutatakse seansitehase objekti loomiseks, mis muudab kaasasoleva konfiguratsioonifaili abil hibernate konfiguratsiooni valmis ja võimaldab seansiobjekti luua. Kuna seansitehas on raske objekt, luuakse see tavaliselt rakenduse algfaasis üks kord. Juhul, kui on vaja luua ühendused mitme andmebaasiga, on vaja mitut seansitehase objekti. Samuti on seansivabrik niidikindlaks objektiks.

3. Seanss

Seansiobjekt loob füüsilise ühenduse andmebaasiga. See on kerge objekt ja see tuleks luua iga kord, kui on vaja andmebaasiga suhtlemist. Kui objekti on vaja säilitada või see tuleb uuesti hankida, saab seda teha ainult seansiobjekti abil. Sessiooniobjekt tuleks sulgeda niipea, kui nõutav toiming on lõpule viidud, kuna need pole keermekindlad.

4. Tehing

See on valikuline objekt ja tähistab andmebaasiga tehtud töö ühikut. Tehinguobjekt tagab, et kas kõiki toiminguid peab teostama või mitte ühtegi neist ei tohi teostada. See on ühe keermega ja lühikese elueaga objekt.

5. Päringu objekt

See objekt kasutab andmebaasist andmete hankimiseks ja objektide kiirendamiseks struktureeritud päringkeelt (SQL) või hibernate päringkeelt (HQL). Päringuobjekti saab kasutada päringult tagastatud väljundi piiramiseks, päringu parameetrite sidumiseks ja päringu täitmiseks.

Päringud

Siin täidame mõned päringud, mis muudavad asjad selgemaks. Vaatleme üksuse töötajat, kelle klass on üles ehitatud järgmiselt:

Kood:

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 nõuab XML-faili nimega hibernate.cfg.xml, mis näeb välja järgmine:

Kood:


com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create

Allpool on kood, mis näitab, kuidas sisestamine ja otsimine toimub hibernatsiooni abil andmebaasi:

Kood:

//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äljund:

ID 1-ga töötajal on nimi Yash, kelle palk on 40000.
ID 2-ga töötajal on Amani palk 42000.

Järeldus

Selles artiklis oleme põhjalikult käsitlenud talvitumist, selle arhitektuuri, võrdluse JDBC-ga ja koodinäiteid. Samuti märkisime, et talveunerežiim on lihtne ja tõhus viis andmebaasiga suhtlemiseks.

Soovitatavad artiklid

See on hibernate raamistiku juhend. Siin käsitleme hibernate ja JDBC arhitektuuri, komponente ning võrdlust koodinäidetega. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Raamid Java
  2. Mis on testimise automatiseerimise raamistikud?
  3. HADOOPi raamistik
  4. .Net Core vs.Net Framework
  5. 2D graafika Java-s
  6. Viska vs viskab | 5 parimat erinevust, mida peaksite teadma