Рубрики
Без рубрики

Загрузка Hibernate 5 с пружиной

Краткое и практическое руководство по интеграции Hibernate 5 с Spring.

Автор оригинала: 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 .