Java >> Java tutorial >  >> Tag >> native

Hibernate Tips:Sådan bruger du Hibernates native bootstrapping API

Hibernate Tips er en række indlæg, hvor jeg beskriver en hurtig og nem løsning på almindelige Hibernate-spørgsmål. Hvis du har et spørgsmål, som du gerne vil have mig til at svare på, bedes du efterlade en kommentar nedenfor.

Spørgsmål:

Jeg har brug for mere kontrol over Hibernates interne konfiguration. Hvordan kan jeg bruge dets native bootstrapping API?

Løsning:

Hibernates native bootstrapping API er meget fleksibel, hvilket gør den mere kompliceret at bruge, men også mere kraftfuld end JPA bootstrapping API. Jeg anbefaler derfor at bruge JPA API, hvis du ikke har brug for denne fleksibilitet.

Før du kan starte bootstrapping-processen, skal du tilføje de nødvendige afhængigheder til din klassesti. Jeg bruger Hibernate 5.2.8.Final til eksemplerne på denne bog og hibernate-core.jar fil er den eneste påkrævede dvale-afhængighed.
Det inkluderer også JPA-jar-filen som en transitiv afhængighed.

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.8.Final</version>
</dependency>

Du skal også tilføje en databasespecifik JDBC-driver til din applikations klassesti. Se venligst din databasedokumentation for mere information.

Så snart du har tilføjet de nødvendige afhængigheder, kan du implementere bootstrapping-processen. Du skal oprette et StandardServiceRegistry , opbyg en metadata objekt og brug det til at instansiere en SessionFactory .

Hibernate bruger to serviceregistre, BootstrapServiceRegistry og StandardServiceRegistry . Standard BootstrapServiceRegistry giver en god løsning til de fleste applikationer, og jeg springer derfor over den programmatiske definition af det i dette eksempel.

Men du skal konfigurere StandardServiceRegistry . Det gør jeg i dette eksempel med en hibernate.cfg.xml fil. Det gør implementeringen nem og giver dig mulighed for at ændre konfigurationen uden at ændre kildekoden. Hibernate indlæser konfigurationsfilen automatisk fra klassestien, når du kalder configure metode på StandardServiceRegistryBuilder . Du kan derefter tilpasse konfigurationen programmatisk, før du kalder build metode til at få et ServiceRegistry .

ServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure()
                                                                       .build();

Følgende kodestykke viser et eksempel på en hibernate.cfg.xml konfigurationsfil. Den fortæller Hibernate at bruge PostgreSQLDialect og for at oprette forbindelse til en PostgreSQL database på localhost. Den beder også Hibernate om at generere databasetabellerne baseret på entitetstilknytningerne. Din konfiguration kan variere, hvis du bruger en anden database eller en forbindelsespulje.

ADVARSEL:Generering af dine databasetabeller baseret på entitetstilknytninger anbefales ikke til produktion!

<hibernate-configuration>
    <session-factory>
        <property name="dialect">
            org.hibernate.dialect.PostgreSQLDialect
        </property>

        <property name="connection.driver_class">
            org.postgresql.Driver
        </property>
        <property name="connection.url">
            jdbc:postgresql://localhost:5432/recipes
        </property>
        <property name="connection.username">postgres</property>
        <property name="connection.password">postgres</property>
        <property name="connection.pool_size">1</property>

        <property name="hbm2ddl.auto">create</property>
    </session-factory>
</hibernate-configuration>

Efter at du har instantieret et konfigureret ServiceRegistry , skal du oprette en metadata repræsentation af din domænemodel.
Du kan gøre det baseret på konfigurationsfilerne hbm.xml og orm.xml eller kommenterede enhedsklasser. Jeg bruger kommenterede klasser i følgende kodestykke.
Jeg bruger først ServiceRegistry som jeg oprettede i det forrige trin for at instantiere en ny MetadataSources objekt. Så tilføjer jeg mine annoterede entitetsklasser og kalder buildMetadata for at oprette metadata repræsentation. I dette eksempel bruger jeg kun Author enhed. Når det er gjort, kalder jeg buildSessionFactory metode på Metadata objekt for at instansiere en SessionFactory .

SessionFactory sessionFactory = new MetadataSources(standardRegistry).addAnnotatedClass(Author.class)
                                                                     .buildMetadata()
                                                                     .buildSessionFactory();
Session session = sessionFactory.openSession();

Det er alt, du skal gøre for at oprette en grundlæggende Hibernate-opsætning med dens oprindelige API. Du kan nu bruge SessionFactory for at åbne en ny session og brug den til at læse eller vedholde enheder.

Author a = new Author();
a.setFirstName("Thorben");
a.setLastName("Janssen");
session.persist(a);;



Dvaletipsbog







Få flere opskrifter som denne i min nye bog Hibernate Tips:Mere end 70 løsninger på almindelige dvaleproblemer.

Den giver dig mere end 70 klar-til-brug opskrifter til emner som grundlæggende og avancerede kortlægninger, logning, Java 8-understøttelse, caching og statisk og dynamisk definerede forespørgsler.

Få det nu!



Java tag