Bootstrapping Hibernate 5 avec Spring

1. Vue d'ensemble

Dans cet article, nous verrons comment démarrer Hibernate 5 avec Spring , en utilisant à la fois la configuration Java et XML.

Cet article se concentre sur Spring MVC. Notre article Spring Boot with Hibernate décrit comment utiliser Hibernate dans Spring Boot.

2. Intégration de printemps

Amorcer une SessionFactory avec l'API native Hibernate est un peu compliqué et nous prendrait pas mal de lignes de code (jetez un œil à la documentation officielle au cas où vous auriez vraiment besoin de le faire).

Heureusement, Spring prend en charge le bootstrap de SessionFactory - de sorte que nous n'avons besoin que de quelques lignes de code Java ou de configuration XML.

3. Dépendances de Maven

Commençons par ajouter d'abord les dépendances nécessaires à notre pom.xml :

 org.hibernate hibernate-core 5.4.2.Final 

Le module spring-orm fournit l'intégration Spring avec Hibernate:

 org.springframework spring-orm 5.1.6.RELEASE 

Par souci de simplicité, nous utiliserons H2 comme base de données:

 com.h2database h2 1.4.197 

Enfin, nous allons utiliser le pool de connexions Tomcat JDBC, qui convient mieux à des fins de production que le DriverManagerDataSource fourni par Spring:

 org.apache.tomcat tomcat-dbcp 9.0.1 

4. Configuration

Comme mentionné précédemment, Spring nous aide à amorcer la Hibernate SessionFactory .

Tout ce que nous avons à faire est de définir quelques beans ainsi que quelques paramètres .

Avec Spring, nous avons deux options pour ces configurations , une méthode basée sur Java et une méthode basée sur XML.

4.1. Utilisation de la configuration Java

Pour utiliser Hibernate 5 avec Spring, peu de choses ont changé depuis Hibernate 4: nous devons utiliser LocalSessionFactoryBean du package org.springframework.orm.hibernate5 au lieu de org.springframework.orm.hibernate4 .

Comme avec Hibernate 4 auparavant, nous devons définir des beans pour LocalSessionFactoryBean , DataSource et PlatformTransactionManager , ainsi que certaines propriétés spécifiques à Hibernate.

Créons notre classe HibernateConfig pour configurer Hibernate 5 avec Spring :

@Configuration @EnableTransactionManagement public class HibernateConf { @Bean public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan( {"com.baeldung.hibernate.bootstrap.model" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @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"); return dataSource; } @Bean public PlatformTransactionManager hibernateTransactionManager() { HibernateTransactionManager transactionManager = new HibernateTransactionManager(); transactionManager.setSessionFactory(sessionFactory().getObject()); return transactionManager; } private final Properties hibernateProperties() { Properties hibernateProperties = new Properties(); hibernateProperties.setProperty( "hibernate.hbm2ddl.auto", "create-drop"); hibernateProperties.setProperty( "hibernate.dialect", "org.hibernate.dialect.H2Dialect"); return hibernateProperties; } }

4.2. Utilisation de la configuration XML

En option secondaire, nous pouvons également configurer Hibernate 5 avec une configuration basée sur XML :

        create-drop   org.hibernate.dialect.H2Dialect              

Comme nous pouvons facilement le voir, nous définissons exactement les mêmes beans et paramètres que dans la configuration basée sur Java précédemment.

Pour amorcer le XML dans le contexte Spring , nous pouvons utiliser un simple fichier de configuration Java si l'application est configurée avec une configuration Java:

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

Alternativement, nous pouvons simplement fournir le fichier XML au contexte Spring, si la configuration globale est purement XML.

5. Utilisation

À ce stade, Hibernate 5 est entièrement configuré avec Spring, et nous pouvons injecter directement Hibernate SessionFactory à chaque fois que nous en avons besoin:

public abstract class BarHibernateDAO { @Autowired private SessionFactory sessionFactory; // ... }

6. Bases de données prises en charge

Malheureusement, le projet Hibernate ne fournit pas exactement une liste officielle des bases de données prises en charge.

Cela étant dit, il est facile de voir si un type de base de données particulier peut être pris en charge , nous pouvons consulter la liste des dialectes pris en charge.

7. Conclusion

Dans ce tutoriel rapide, nous avons configuré Spring avec Hibernate 5 - avec une configuration Java et XML.

Comme toujours, le code source complet des exemples est disponible à l'adresse over sur GitHub.