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.