Démarrer Hibernate 5 avec Spring
1. Vue d'ensemble
Dans cet article, nous allons expliquer commentbootstrap Hibernate 5 with Spring, en utilisant à la fois la configuration Java et XML.
2. Intégration Spring
Amorcer unSessionFactory avec l'API native Hibernate est un peu compliqué et nous prendrait pas mal de lignes de code (jetez un œil auxofficial documentation au cas où vous auriez vraiment besoin de le faire).
Heureusement,Spring supports bootstrapping the SessionFactory– donc nous n'avons besoin que de quelques lignes de code Java ou de configuration XML.
De plus, avant de nous lancer, si vous travaillez avec des versions plus anciennes d'Hibernate, vous pouvez consulter les articles surHibernate 3 ainsi que surHibernate 4 avec Spring.
3. Dépendances Maven
Commençons par ajouter d'abord les dépendances nécessaires à nospom.xml:
org.hibernate
hibernate-core
5.4.2.Final
Lespring-orm module fournit l'intégration Spring avec Hibernate:
org.springframework
spring-orm
5.1.6.RELEASE
Par souci de simplicité, nous utiliseronsH2 comme base de données:
com.h2database
h2
1.4.197
Enfin, nous allons utiliserTomcat JDBC Connection Pooling, qui convient mieux à des fins de production que lesDriverManagerDataSource fournis par Spring:
org.apache.tomcat
tomcat-dbcp
9.0.1
4. Configuration
Comme mentionné précédemment, Spring nous aide à démarrer le HibernateSessionFactory.
Tout ce que nous avons à faire est dedefine some beans as well as a few parameters.
Avec Spring, nous avonstwo options for these 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é depuisHibernate 4: nous devons utiliserLocalSessionFactoryBean du packageorg.springframework.orm.hibernate5 au lieu deorg.springframework.orm.hibernate4.
Comme avec Hibernate 4 auparavant, nous devons définir des beans pourLocalSessionFactoryBean,DataSource etPlatformTransactionManager, ainsi que certaines propriétés spécifiques à Hibernate.
Créons notre classeHibernateConfig versconfigure Hibernate 5 with Spring:
@Configuration
@EnableTransactionManagement
public class HibernateConf {
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(
{"com.example.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 égalementconfigure Hibernate 5 with an XML-based configuration:
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.
To bootstrap the XML into the Spring context, 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. Usage
À ce stade, Hibernate 5 est entièrement configuré avec Spring, et nous pouvonsinject the raw Hibernate SessionFactory directement chaque fois que nous avons besoin de:
public abstract class BarHibernateDAO {
@Autowired
private SessionFactory sessionFactory;
// ...
}
6. Bases de données supportées
Malheureusement, le projet Hibernate ne fournit pas exactement une liste officielle des bases de données prises en charge.
Cela étant dit,it’s easy to see if a particular database type might be supported, nous pouvons jeter un œil auxlist of supported dialects.
7. Conclusion
Dans ce tutoriel rapide,we configured Spring with Hibernate 5 - avec une configuration Java et XML.
Comme toujours, le code source complet des exemples est disponibleover on GitHub.