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.