API za Hibernate 5 Bootstrapping

1. Pregled

U ovom uputstvu istražit ćemo novi mehanizam pomoću kojeg možemo inicijalizirati i pokrenuti stanje hibernacije SjednicaTvornica. Posebno ćemo se usredotočiti na novi izvorni postupak pokretanja sustava, koji je redizajniran u verziji 5.0.

Prije verzije 5.0, aplikacije su morale koristiti Konfiguracija klase za pokretanje SjednicaTvornica. Ovaj je pristup zastario, jer Hibernate dokumentacija preporučuje upotrebu novog API-ja temeljenog na ServiceRegistry.

Jednostavno rečeno, zgrada a SjednicaTvornica je sve o tome da imate ServiceRegistry provedba koja drži Usluge potreban hibernaciji tijekom pokretanja i izvođenja.

2. Ovisnosti Mavena

Prije nego što započnemo s istraživanjem novog postupka bootstrappinga, moramo dodati hibernacija-jezgra jar datoteku do staze projekta. U projektu koji se temelji na Mavenu, samo trebamo proglasiti ovu ovisnost u pom.xml datoteka:

 org.hibernate hibernate-core 5.4.0.Final 

Budući da je Hibernate pružatelj usluga JPA, to će također tranzitivno uključivati ​​ovisnost o JPA API-ju.

Također nam je potreban JDBC pokretački program baze podataka s kojom radimo. U ovom ćemo primjeru koristiti ugrađenu H2 bazu podataka:

 com.h2data baza podataka h2 1.4.197 

Slobodno provjerite najnovije verzije sustava hibernacija-jezgra i H2 vozač na Maven Central.

3. API za pokretanje sustava

Bootstrapping se odnosi na postupak izgradnje i inicijalizacije a SjednicaTvornica.

Da bismo postigli ovu svrhu, moramo imati ServiceRegistry koji drži Usluge potreban hibernaciji. Iz ovog registra možemo stvoriti Metapodaci objekt koji predstavlja model domene aplikacije i njegovo mapiranje u bazu podataka.

Istražimo ove glavne objekte detaljnije.

3.1. Servis

Prije nego što kopamo u ServiceRegistry koncept, prvo moramo shvatiti što a Servis je. U hibernaciji 5.0, a Servis je vrsta funkcionalnosti koju predstavlja sučelje s istim imenom:

org.hibernate.service.Service

Hibernate prema zadanim postavkama nudi implementacije za najčešće Usluge, a oni su u većini slučajeva dovoljni. Inače možemo graditi svoje Usluge ili za izmjenu izvornih funkcionalnosti hibernacije ili za dodavanje novih.

U sljedećem pododjeljku pokazat ćemo kako Hibernate stvara ove Usluge dostupan kroz lagani spremnik tzv ServiceRegistry.

3.2. ServiceRegistry

Prvi korak u izgradnji a SjednicaTvornica je stvoriti ServiceRegistry. To omogućuje držanje raznih Usluge koji pružaju funkcionalnosti potrebne Hibernate-u i temelji se na Java SPI funkcionalnosti.

Tehnički gledano, možemo vidjeti ServiceRegistry kao lagani alat za ubrizgavanje ovisnosti gdje je grah samo vrste Servis.

Postoje dvije vrste ServiceRegistry a oni su hijerarhijski.Prva je BootstrapServiceRegistry, koja nema roditelja i ima ove tri potrebne usluge:

  • ClassLoaderService: omogućuje Hibernate interakciju s ClassLoader različitih runtime okruženja
  • IntegratorService: kontrolira otkrivanje i upravljanje sustavom Integrator usluga koja omogućuje nezavisnim aplikacijama integraciju s Hibernateom
  • Selektor strategije: rješava provedbe različitih strateških ugovora

Za izgradnju a BootstrapServiceRegistry implementaciju, koristimo BootstrapServiceRegistryBuilder tvornička klasa, što omogućuje prilagodbu ove tri usluge na siguran način:

BootstrapServiceRegistry bootstrapServiceRegistry = novi BootstrapServiceRegistryBuilder () .applyClassLoader () .applyIntegrator () .applyStrategySelector () .build ();

Drugi ServiceRegistry je StandardServiceRegistry, koja se nadovezuje na prethodnu BootstrapServiceRegistry i drži tri Usluge gore navedeno. Uz to sadrži i razne druge Usluge potreban hibernaciji, naveden u StandardServiceInitiators razred.

Kao i prethodni registar, koristimo StandardServiceRegistryBuilder stvoriti instancu StandardServiceRegistry:

StandardServiceRegistryBuilder standardServiceRegistry = novi StandardServiceRegistryBuilder ();

Ispod poklopca motora StandardServiceRegistryBuilder stvara i koristi instancu BootstrapServiceRegistry. Također možemo koristiti preopterećeni konstruktor za prosljeđivanje već stvorene instance:

BootstrapServiceRegistry bootstrapServiceRegistry = novi BootstrapServiceRegistryBuilder (). Build (); StandardServiceRegistryBuilder standardServiceRegistryBuilder = novi StandardServiceRegistryBuilder (bootstrapServiceRegistry);

Ovim graditeljem učitavamo konfiguraciju iz datoteke resursa, poput zadane hibernate.cfg.xml, i na kraju, pozivamo se na izgraditi() metoda za dobivanje instance StandardServiceRegistry.

StandardServiceRegistry standardServiceRegistry = standardServiceRegistryBuilder .configure () .build ();

3.3. Metapodaci

Nakon što ste konfigurirali sve Usluge potreban instanciranjem a ServiceRegistry bilo od tipa BootstrapServiceRegistry ili StandardServiceRegistry, sada moramo pružiti prikaz modela domene aplikacije i mapiranje baze podataka.

The Izvori metapodataka klasa je odgovorna za ovo:

MetadataSources metadataSources = novi MetadataSources (standardServiceRegistry); metadataSources.addAnnotatedClass (); metadataSources.addResource ()

Dalje, dobivamo primjerak Metapodaci, koju ćemo upotrijebiti u posljednjem koraku:

Metapodaci metapodaci = metadataSources.buildMetadata ();

3.4. SjednicaTvornica

Posljednji korak je stvaranje SjednicaTvornica iz prethodno stvorenog Metapodaci:

SessionFactory sessionFactory = metapodaci.buildSessionFactory ();

Sada možemo otvoriti a Sjednica i počnite ustrajati i čitati entitete:

Sjednica sesije = sessionFactory.openSession (); Filmski film = novi film (100L); session.persist (film); session.createQuery ("FROM Movie"). list ();

4. Zaključak

U ovom smo članku istražili korake potrebne za izgradnju a SjednicaTvornica. Iako se postupak čini složenim, možemo ga sažeti u tri glavna koraka: prvo smo stvorili instancu StandardServiceRegistry, tada smo izgradili a Metapodaci objekt, i na kraju, izgradili smo SjednicaTvornica.

Cjelovit kod za ove primjere možete pronaći na Githubu.


$config[zx-auto] not found$config[zx-overlay] not found