Bootstrapping Hibernate 5 mit Spring

1. Übersicht

In diesem Artikel wird erläutert, wie Sie Hibernate 5 mit Spring unter Verwendung der Java- und XML-Konfiguration booten.

Dieser Artikel konzentriert sich auf Spring MVC. In unserem Artikel Spring Boot mit Ruhezustand wird die Verwendung von Ruhezustand in Spring Boot beschrieben.

2. Federintegration

Das Bootstrapping einer SessionFactory mit der nativen Hibernate-API ist etwas kompliziert und würde einige Codezeilen erfordern (sehen Sie sich die offizielle Dokumentation an, falls Sie dies wirklich tun müssen).

Glücklicherweise Bootstrapping Federstütze die Session - so dass wir nur ein paar Zeilen Java - Code oder XML - Konfiguration benötigen.

3. Maven-Abhängigkeiten

Beginnen wir damit, dass wir zuerst die erforderlichen Abhängigkeiten zu unserer pom.xml hinzufügen :

 org.hibernate hibernate-core 5.4.2.Final 

Das Spring-Orm-Modul bietet die Spring-Integration mit Hibernate:

 org.springframework spring-orm 5.1.6.RELEASE 

Der Einfachheit halber verwenden wir H2 als Datenbank:

 com.h2database h2 1.4.197 

Schließlich werden wir Tomcat JDBC Connection Pooling verwenden, das für Produktionszwecke besser geeignet ist als die von Spring bereitgestellte DriverManagerDataSource :

 org.apache.tomcat tomcat-dbcp 9.0.1 

4. Konfiguration

Wie bereits erwähnt, unterstützt uns Spring beim Bootstrapping der Hibernate SessionFactory .

Alles was wir tun müssen, ist einige Bohnen sowie einige Parameter zu definieren .

Mit Spring haben wir zwei Optionen für diese Konfigurationen , eine Java-basierte und eine XML-basierte Methode.

4.1. Verwenden der Java-Konfiguration

Für die Verwendung von Hibernate 5 mit Spring hat sich seit Hibernate 4 wenig geändert: Wir müssen LocalSessionFactoryBean aus dem Paket org.springframework.orm.hibernate5 anstelle von org.springframework.orm.hibernate4 verwenden .

Wie bei Hibernate 4 müssen wir Beans für LocalSessionFactoryBean , DataSource und PlatformTransactionManager sowie einige Hibernate-spezifische Eigenschaften definieren.

Erstellen wir unsere HibernateConfig- Klasse, um Hibernate 5 mit Spring zu konfigurieren :

@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. Verwenden der XML-Konfiguration

Als sekundäre Option können wir Hibernate 5 auch mit einer XML-basierten Konfiguration konfigurieren :

        create-drop   org.hibernate.dialect.H2Dialect              

Wie wir leicht sehen können, definieren wir genau die gleichen Beans und Parameter wie in der Java-basierten Konfiguration zuvor.

Um das XML in den Spring-Kontext zu booten , können wir eine einfache Java-Konfigurationsdatei verwenden, wenn die Anwendung mit Java-Konfiguration konfiguriert ist:

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

Alternativ können wir die XML-Datei einfach für den Spring Context bereitstellen, wenn die Gesamtkonfiguration rein XML ist.

5. Verwendung

Zu diesem Zeitpunkt ist Hibernate 5 vollständig mit Spring konfiguriert, und wir können die unformatierte Hibernate SessionFactory direkt einfügen, wann immer wir Folgendes benötigen:

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

6. Unterstützte Datenbanken

Leider bietet das Hibernate-Projekt nicht genau eine offizielle Liste der unterstützten Datenbanken.

Abgesehen davon ist es leicht zu erkennen, ob ein bestimmter Datenbanktyp unterstützt wird. Wir können uns die Liste der unterstützten Dialekte ansehen.

7. Fazit

In diesem kurzen Tutorial haben wir Spring mit Hibernate 5 konfiguriert - sowohl mit Java- als auch mit XML-Konfiguration.

Wie immer ist der vollständige Quellcode der Beispiele auf GitHub verfügbar.