Начальная загрузка Hibernate 5 с Spring

Самозагрузка Hibernate 5 с весны

1. обзор

В этой статье мы обсудим, как использоватьbootstrap Hibernate 5 with Spring, используя конфигурацию как Java, так и XML.

2. Весенняя интеграция

ЗагрузкаSessionFactory с помощью собственного Hibernate API немного сложна и потребует от нас довольно много строк кода (взгляните наofficial documentation, если вам действительно нужно это сделать).

К счастью,Spring supports bootstrapping the SessionFactory, так что нам нужно всего несколько строк кода Java или конфигурации XML.

Кроме того, прежде чем мы начнем, если вы работаете со старыми версиями Hibernate, вы можете ознакомиться со статьями оHibernate 3, а также оHibernate 4 с Spring.

3. Maven Зависимости

Давайте начнем с добавления необходимых зависимостей к нашемуpom.xml:


    org.hibernate
    hibernate-core
    5.4.2.Final

spring-orm module обеспечивает интеграцию Spring с Hibernate:


    org.springframework
    spring-orm
    5.1.6.RELEASE

Для простоты мы будем использоватьH2 в качестве нашей базы данных:


    com.h2database
    h2
    1.4.197

Наконец, мы собираемся использоватьTomcat JDBC Connection Pooling, который лучше подходит для производственных целей, чемDriverManagerDataSource, предоставляемый Spring:


    org.apache.tomcat
    tomcat-dbcp
    9.0.1

4. конфигурация

Как упоминалось ранее, Spring поддерживает нас загрузкой HibernateSessionFactory.

Все, что нам нужно сделать, этоdefine some beans as well as a few parameters.

В Spring у нас естьtwo options for these configurations, основанный на Java и XML.

4.1. Использование конфигурации Java

Для использования Hibernate 5 с Spring мало что изменилось со времениHibernate 4: мы должны использоватьLocalSessionFactoryBean из пакетаorg.springframework.orm.hibernate5 вместоorg.springframework.orm.hibernate4.

Как и в случае с Hibernate 4 ранее, мы должны определить beans дляLocalSessionFactoryBean,DataSource иPlatformTransactionManager, а также некоторые свойства, специфичные для Hibernate.

Давайте создадим наш классHibernateConfig дляconfigure 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. Использование конфигурации XML

В качестве дополнительного варианта мы также можемconfigure Hibernate 5 with an XML-based configuration:




    
        
        
        
            
                
                    create-drop
                
                
                    org.hibernate.dialect.H2Dialect
                
            
        
    

    
        
        
        
        
    

    
        
    

Как мы легко можем видеть, мы определяем точно такие же bean-компоненты и параметры, что и ранее в конфигурации на основе Java.

To bootstrap the XML into the Spring context, мы можем использовать простой файл конфигурации Java, если приложение настроено с конфигурацией Java:

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

В качестве альтернативы, мы можем просто предоставить XML-файл в контекст Spring, если общая конфигурация является чисто XML.

5. использование

На данный момент Hibernate 5 полностью настроен с помощью Spring, и мы можем напрямуюinject the raw Hibernate SessionFactory, когда нам нужно:

public abstract class BarHibernateDAO {

    @Autowired
    private SessionFactory sessionFactory;

    // ...
}

6. Поддерживаемые базы данных

К сожалению, в проекте Hibernate нет точного официального списка поддерживаемых баз данных.

При этом,it’s easy to see if a particular database type might be supported, мы можем взглянуть наlist of supported dialects.

7. Заключение

В этом кратком руководствеwe configured Spring with Hibernate 5 - с конфигурацией Java и XML.

Как всегда, доступен полный исходный код примеровover on GitHub.