Автор оригинала: Markus Gulden.
1. Обзор
В этой статье мы обсудим, как bootstrap Hibernate 5 с Spring , используя конфигурацию Java и XML.
Эта статья посвящена Spring MVC. В нашей статье Spring Boot with Hibernate описывается, как использовать Hibernate в Spring Boot.
2. Весенняя интеграция
Загрузка SessionFactory с помощью собственного API Hibernate немного сложна и займет у нас довольно много строк кода (взгляните на официальную документацию , если вам действительно нужно это сделать).
К счастью, Spring поддерживает загрузку SessionFactory – , так что нам нужно всего несколько строк кода Java или конфигурации XML.
3. Зависимости Maven
Давайте начнем с того, что сначала добавим необходимые зависимости в ваш pom.xml :
org.hibernate hibernate-core 5.4.2.Final
Модуль spring-orm обеспечивает интеграцию Spring с Hibernate:
org.springframework spring-orm 5.1.6.RELEASE
Для простоты мы будем использовать H2 в качестве нашей базы данных:
com.h2database h2 1.4.197
Наконец, мы собираемся использовать пул соединений Tomcat JDBC , который лучше подходит для производственных целей, чем DriverManagerDataSource , предоставленный Spring:
org.apache.tomcat tomcat-dbcp 9.0.1
4. Конфигурация
Как упоминалось ранее, Spring поддерживает нас с загрузкой Hibernate SessionFactory .
Все, что нам нужно сделать, это определить некоторые бобы, а также несколько параметров .
С Spring у нас есть два варианта для этих конфигураций , основанный на Java и основанный на XML способ.
4.1. Использование конфигурации Java
Для использования Hibernate 5 с Spring мало что изменилось с Hibernate 4 : мы должны использовать LocalSessionFactoryBean из пакета org.springframework.orm.hibernate5 вместо org.springframework.orm.hibernate4 .
Как и в случае с Hibernate 4 ранее, мы должны определить компоненты для LocalSessionFactoryBean , DataSource и PlatformTransactionManager , а также некоторые свойства , специфичные для Hibernate.
Давайте создадим ваш Hibernate Config класс, чтобы настроить Hibernate 5 с помощью 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. Использование конфигурации XML
В качестве дополнительного варианта мы также можем настроить Hibernate 5 с помощью конфигурации на основе XML :
create-drop org.hibernate.dialect.H2Dialect
Как мы можем легко видеть, мы определяем точно те же компоненты и параметры, что и в конфигурации на основе Java ранее.
Чтобы загрузить XML в контекст Spring , мы можем использовать простой файл конфигурации Java, если приложение настроено с конфигурацией Java:
@Configuration @EnableTransactionManagement @ImportResource({"classpath:hibernate5Configuration.xml"}) public class HibernateXMLConf { // }
В качестве альтернативы мы можем просто предоставить XML-файл в контекст Spring, если общая конфигурация является чисто XML.
5. Использование
На данный момент Hibernate 5 полностью настроен на Spring, и мы можем вводить необработанный Hibernate SessionFactory напрямую, когда нам это нужно:
public abstract class BarHibernateDAO { @Autowired private SessionFactory sessionFactory; // ... }
6. Поддерживаемые базы данных
К сожалению, проект Hibernate точно не предоставляет официального списка поддерживаемых баз данных.
Тем не менее, легко увидеть , может ли поддерживаться определенный тип базы данных , мы можем взглянуть на список поддерживаемых диалектов .
7. Заключение
В этом кратком руководстве/| мы настроили Spring с помощью Hibernate 5 – с конфигурацией Java и XML.
Как всегда, полный исходный код примеров доступен на GitHub .