Bootstrapping Hibernate 5 med Spring

1. Oversigt

I denne artikel vil vi diskutere, hvordan man gør det bootstrap Hibernate 5 med Spring, ved hjælp af både Java- og XML-konfiguration.

Denne artikel fokuserer på Spring MVC. Vores artikel Spring Boot with Hibernate beskriver, hvordan du bruger dvale i Spring Boot.

2. Forårsintegration

Bootstrapping a SessionFactory med den indfødte Hibernate API er lidt kompliceret og ville tage os en hel række linjer kode (se på den officielle dokumentation, hvis du virkelig har brug for det).

Heldigvis, Foråret understøtter bootstrapping af SessionFactoryså vi kun har brug for et par linjer med Java-kode eller XML-konfiguration.

3. Maven-afhængigheder

Lad os komme i gang ved først at tilføje de nødvendige afhængigheder til vores pom.xml:

 org. dvale-dvale-core 5.4.2.Final 

Spring-orm-modulet giver Spring-integration med Hibernate:

 org.springframework spring-orm 5.1.6.RELEASE 

Af hensyn til enkelheden bruger vi H2 som vores database:

 com.h2database h2 1.4.197 

Endelig skal vi bruge Tomcat JDBC Connection Pooling, som passer bedre til produktionsformål end DriverManagerDataSource leveret af Spring:

 org.apache.tomcat tomcat-dbcp 9.0.1 

4. Konfiguration

Som tidligere nævnt støtter Spring os med bootstrapping af dvale SessionFactory.

Alt hvad vi skal gøre er at definere nogle bønner samt et par parametre.

Med foråret har vi det to muligheder for disse konfigurationer, en Java-baseret og en XML-baseret måde.

4.1. Brug af Java-konfiguration

For at bruge dvaletilstand 5 med foråret har der ikke ændret sig meget siden dvaletilstand 4: vi skal bruge LocalSessionFactoryBean fra pakken org.springframework.orm.hibernate5 i stedet for org.springframework.orm.hibernate4.

Som med Hibernate 4 før er vi nødt til at definere bønner til LocalSessionFactoryBean, Datakildeog PlatformTransactionManagersamt nogle dvale-specifikke egenskaber.

Lad os skabe vores DvaletilstandConfig klasse til konfigurer Dvaletilstand 5 med Spring:

@Configuration @EnableTransactionManagement offentlig klasse HibernateConf {@Bean public LocalSessionFactoryBean sessionFactory () {LocalSessionFactoryBean sessionFactory = ny LocalSessionFactoryBean (); sessionFactory.setDataSource (dataSource ()); sessionFactory.setPackagesToScan ({"com.baeldung.hibernate.bootstrap.model"}); sessionFactory.setHibernateProperties (hibernateProperties ()); retur sessionFabrik; } @Bean public DataSource dataSource () {BasicDataSource dataSource = new BasicDataSource (); dataSource.setDriverClassName ("org.h2.Driver"); dataSource.setUrl ("jdbc: h2: mem: db; DB_CLOSE_DELAY = -1"); dataSource.setUsername ("sa"); dataSource.setPassword ("sa"); returnere datakilde; } @Bean offentlig PlatformTransactionManager hibernateTransactionManager () {HibernateTransactionManager transactionManager = ny HibernateTransactionManager (); transactionManager.setSessionFactory (sessionFactory (). getObject ()); returtransaktionManager; } private final Egenskaber hibernateProperties () {Properties hibernateProperties = nye egenskaber (); hibernateProperties.setProperty ("hibernate.hbm2ddl.auto", "create-drop"); hibernateProperties.setProperty ("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); returnere dvaleegenskaber; }}

4.2. Brug af XML-konfiguration

Som en sekundær mulighed kan vi også konfigurer Hibernate 5 med en XML-baseret konfiguration:

        Opret-slip org.hibernate.dialect.H2Dialect 

Som vi let kan se, definerer vi nøjagtigt de samme bønner og parametre som i den Java-baserede konfiguration tidligere.

At bootstrape XML i foråret sammenhæng, kan vi bruge en simpel Java-konfigurationsfil, hvis applikationen er konfigureret med Java-konfiguration:

@Configuration @EnableTransactionManagement @ImportResource ({"classpath: hibernate5Configuration.xml"}) offentlig klasse HibernateXMLConf {//}

Alternativt kan vi blot levere XML-filen til Spring Context, hvis den overordnede konfiguration er rent XML.

5. Anvendelse

På dette tidspunkt er Hibernate 5 fuldt konfigureret med Spring, og det kan vi indsprøjt den rå dvale SessionFactory direkte når vi har brug for:

offentlig abstrakt klasse BarHibernateDAO {@Autowired private SessionFactory sessionFactory; // ...}

6. Understøttede databaser

Desværre indeholder dvale-projektet ikke ligefrem en officiel liste over understøttede databaser.

Når det er sagt, det er let at se, om en bestemt databasetype muligvis understøttes, kan vi se på listen over understøttede dialekter.

7. Konklusion

I denne hurtige vejledning vi konfigurerede Spring med Hibernate 5 - med både Java- og XML-konfiguration.

Som altid er den fulde kildekode for eksemplerne tilgængelig på GitHub.