Bootstrapping Hibernate 5 met lente

1. Overzicht

In dit artikel bespreken we hoe u dit kunt doen bootstrap Hibernate 5 met Spring, met behulp van zowel Java- als XML-configuratie.

Dit artikel richt zich op Spring MVC. In ons artikel Spring Boot with Hibernate wordt beschreven hoe u Hibernate in Spring Boot kunt gebruiken.

2. Lente-integratie

Bootstrapping een SessionFactory met de native Hibernate API is een beetje ingewikkeld en zou ons nogal wat regels code kosten (bekijk de officiële documentatie voor het geval je dat echt moet doen).

Gelukkig, Spring ondersteunt bootstrapping van de SessionFactoryzodat we slechts een paar regels Java-code of XML-configuratie nodig hebben.

3. Maven afhankelijkheden

Laten we beginnen door eerst de nodige afhankelijkheden toe te voegen aan onze pom.xml:

 org.hibernate hibernate-core 5.4.2.Final 

De spring-orm-module biedt de Spring-integratie met Hibernate:

 org.springframework spring-orm 5.1.6.RELEASE 

Voor het gemak gebruiken we H2 als onze database:

 com.h2database h2 1.4.197 

Ten slotte gaan we Tomcat JDBC Connection Pooling gebruiken, die beter past voor productiedoeleinden dan het DriverManagerDataSource geleverd door Spring:

 org.apache.tomcat tomcat-dbcp 9.0.1 

4. Configuratie

Zoals eerder vermeld, ondersteunt Spring ons met het opstarten van de Hibernate SessionFactory.

Het enige wat we hoeven te doen is definieer enkele bonen en enkele parameters.

Met de lente hebben we twee opties voor deze configuraties, een op Java gebaseerde en een op XML gebaseerde manier.

4.1. Java-configuratie gebruiken

Voor het gebruik van Hibernate 5 met Spring is er weinig veranderd sinds Hibernate 4: we moeten gebruiken LocalSessionFactoryBean uit de verpakking org.springframework.orm.hibernate5 in plaats van org.springframework.orm.hibernate4.

Net als bij Hibernate 4, moeten we bonen definiëren voor LocalSessionFactoryBean, Databron, en PlatformTransactionManager, evenals enkele Hibernate-specifieke eigenschappen.

Laten we onze HibernateConfig klas naar configureer Hibernate 5 met Spring:

@Configuration @EnableTransactionManagement openbare klasse HibernateConf {@Bean openbare LocalSessionFactoryBean sessionFactory () {LocalSessionFactoryBean sessionFactory = nieuwe LocalSessionFactoryBean (); sessionFactory.setDataSource (dataSource ()); sessionFactory.setPackagesToScan ({"com.baeldung.hibernate.bootstrap.model"}); sessionFactory.setHibernateProperties (hibernateProperties ()); return sessionFactory; } @Bean openbare DataSource dataSource () {BasicDataSource dataSource = nieuwe BasicDataSource (); dataSource.setDriverClassName ("org.h2.Driver"); dataSource.setUrl ("jdbc: h2: mem: db; DB_CLOSE_DELAY = -1"); dataSource.setUsername ("sa"); dataSource.setPassword ("sa"); retourneer dataSource; } @Bean openbaar PlatformTransactionManager hibernateTransactionManager () {HibernateTransactionManager transactionManager = nieuwe HibernateTransactionManager (); transactionManager.setSessionFactory (sessionFactory (). getObject ()); return transactionManager; } private finale Eigenschappen hibernateProperties () {Eigenschappen hibernateProperties = nieuwe eigenschappen (); hibernateProperties.setProperty ("hibernate.hbm2ddl.auto", "create-drop"); hibernateProperties.setProperty ("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); terugkeer hibernateProperties; }}

4.2. XML-configuratie gebruiken

Als secundaire optie kunnen we dat ook configureer Hibernate 5 met een op XML gebaseerde configuratie:

        create-drop org.hibernate.dialect.H2Dialect 

Zoals we gemakkelijk kunnen zien, definiëren we precies dezelfde bonen en parameters als in de eerder op Java gebaseerde configuratie.

Om de XML op te starten in de Spring-contextkunnen we een eenvoudig Java-configuratiebestand gebruiken als de applicatie is geconfigureerd met Java-configuratie:

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

Als alternatief kunnen we het XML-bestand eenvoudig aan de Spring Context leveren, als de algehele configuratie puur XML is.

5. Gebruik

Op dit punt is Hibernate 5 volledig geconfigureerd met Spring, en dat kunnen we injecteer de ruwe Hibernate SessionFactory direct wanneer we:

openbare abstracte klasse BarHibernateDAO {@Autowired privé SessionFactory sessionFactory; // ...}

6. Ondersteunde databases

Helaas biedt het Hibernate-project niet echt een officiële lijst met ondersteunde databases.

Dat gezegd hebbende, het is gemakkelijk om te zien of een bepaald databasetype mogelijk wordt ondersteundkunnen we de lijst met ondersteunde dialecten bekijken.

7. Conclusie

In deze korte tutorial, we hebben Spring geconfigureerd met Hibernate 5 - met zowel Java- als XML-configuratie.

Zoals altijd is de volledige broncode van de voorbeelden beschikbaar op GitHub.