Hibernate 5 Bootstrapping API

1. Prehľad

V tomto tutoriáli preskúmame nový mechanizmus, pomocou ktorého môžeme inicializovať a spustiť režim dlhodobého spánku SessionFactory. Špeciálne sa zameriame na nový proces natívneho bootstrappingu, ktorý bol prepracovaný vo verzii 5.0.

Pred verziou 5.0 museli aplikácie používať Konfigurácia triedy na bootstrap SessionFactory. Tento prístup je teraz zastaraný, pretože dokumentácia k režimu dlhodobého spánku odporúča používať nové API založené na ServiceRegistry.

Jednoducho povedané, budova a SessionFactory všetko je o tom mať ServiceRegistry implementácia, ktorá drží Služby potrebné režimom dlhodobého spánku počas spustenia aj počas behu.

2. Maven závislosti

Predtým, ako začneme skúmať nový proces zavádzania, musíme pridať hibernácia-jadro súbor jar do triedy projektu. V projekte založenom na Mavene musíme túto závislosť deklarovať v pom.xml spis:

 org.hibernate hibernate-core 5.4.0.Final 

Pretože Hibernate je poskytovateľ JPA, bude to prechodne zahŕňať aj závislosť na JPA API.

Potrebujeme tiež ovládač JDBC databázy, s ktorou pracujeme. V tomto príklade použijeme vloženú databázu H2:

 com.h2database h2 1.4.197 

Neváhajte a skontrolujte najnovšie verzie servera hibernácia-jadro a Vodič H2 na Maven Central.

3. Bootstrapping API

Bootstrapping označuje proces vytvárania a inicializácie a SessionFactory.

Aby sme dosiahli tento účel, musíme mať a ServiceRegistry ktorý drží Služby potrebné režimom dlhodobého spánku. Z tohto registra môžeme vytvoriť Metadáta objekt, ktorý predstavuje model domény aplikácie a jej mapovanie do databázy.

Poďme preskúmať tieto hlavné objekty podrobnejšie.

3.1. Služby

Predtým, ako sa zahĺbime do ServiceRegistry koncept, najskôr musíme pochopiť, čo a Služby je. V režime dlhodobého spánku 5.0, a Služby je typ funkčnosti predstavovanej rozhraním s rovnakým názvom:

org.hibernate.service.Service

Hibernate predvolene poskytuje implementácie pre najbežnejšie Služby, a vo väčšine prípadov postačujú. V opačnom prípade si môžeme postaviť vlastný Služby buď upraviť pôvodné funkcie dlhodobého spánku, alebo pridať nové.

V nasledujúcej podkapitole si ukážeme, ako ich robí režim dlhodobého spánku Služby k dispozícii prostredníctvom ľahkého kontajnera s názvom ServiceRegistry.

3.2. ServiceRegistry

Prvým krokom pri budovaní a SessionFactory je vytvoriť ServiceRegistry. To umožňuje držanie rôznych Služby ktoré poskytujú funkcie potrebné pre režim dlhodobého spánku a je založená na funkcii Java SPI.

Technicky vzaté, môžeme vidieť ServiceRegistry ako ľahký nástroj Dependency Injection, kde fazuľa je iba typu Služby.

Existujú dva typy ServiceRegistry a sú hierarchické.Prvý je BootstrapServiceRegistry, ktorá nemá žiadneho rodiča a je držiteľom týchto troch požadovaných služieb:

  • ClassLoaderService: umožňuje Hibernate komunikovať s ClassLoader rôznych runtime prostredí
  • IntegratorService: kontroluje objavovanie a správu Integrátor služba umožňujúca integráciu aplikácií tretích strán s režimom dlhodobého spánku
  • StrategySelector: rieši implementácie rôznych strategických zmlúv

Postaviť a BootstrapServiceRegistry implementáciu používame BootstrapServiceRegistryBuilder továrenská trieda, čo umožňuje prispôsobiť tieto tri služby spôsobom bezpečným pre typ:

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

Druhy ServiceRegistry je StandardServiceRegistry, ktorá nadväzuje na predchádzajúcu BootstrapServiceRegistry a drží tri Služby spomenuté vyššie. Ďalej obsahuje rôzne ďalšie Služby potrebné pre režim dlhodobého spánku, uvedené v zozname StandardServiceInitiators trieda.

Rovnako ako v predchádzajúcom registri používame StandardServiceRegistryBuilder vytvoriť inštanciu StandardServiceRegistry:

StandardServiceRegistryBuilder standardServiceRegistry = nový StandardServiceRegistryBuilder ();

Pod kapotou je StandardServiceRegistryBuilder vytvára a používa inštanciu BootstrapServiceRegistry. Môžeme tiež použiť preťažený konštruktor na odovzdanie už vytvorenej inštancie:

BootstrapServiceRegistry bootstrapServiceRegistry = nový BootstrapServiceRegistryBuilder (). Build (); StandardServiceRegistryBuilder standardServiceRegistryBuilder = nový StandardServiceRegistryBuilder (bootstrapServiceRegistry);

Tento tvorca používame na načítanie konfigurácie zo súboru prostriedkov, napríklad predvoleného hibernate.cfg.xmla nakoniec privoláme build () metóda na získanie inštancie súboru StandardServiceRegistry.

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

3.3. Metadáta

Po nakonfigurovaní všetkých Služby potrebné vytvorením inštancie a ServiceRegistry buď typu BootstrapServiceRegistry alebo StandardServiceRegistry, teraz musíme poskytnúť znázornenie doménového modelu aplikácie a jej mapovanie databázy.

The Zdroje metadát trieda je zodpovedná za toto:

MetadataSources metadataSources = nové MetadataSources (standardServiceRegistry); metadataSources.addAnnotatedClass (); metadataSources.addResource ()

Ďalej dostaneme inštanciu Metadáta, ktoré použijeme v poslednom kroku:

Metadata metadata = metadataSources.buildMetadata ();

3.4. SessionFactory

Posledným krokom je vytvorenie SessionFactory z predtým vytvorených Metadáta:

SessionFactory sessionFactory = metadata.buildSessionFactory ();

Teraz môžeme otvoriť a Session a začnite pretrvávať a čítať entity:

Relácia session = sessionFactory.openSession (); Filmový film = nový film (100L); session.persist (film); session.createQuery ("Z filmu"). list ();

4. Záver

V tomto článku sme preskúmali kroky potrebné na zostavenie a SessionFactory. Aj keď sa tento proces javí ako zložitý, môžeme ho zhrnúť do troch hlavných krokov: najskôr sme vytvorili inštanciu StandardServiceRegistry, potom sme postavili Metadáta objekt a nakoniec sme postavili SessionFactory.

Celý kód týchto príkladov nájdete na stránkach Github.


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