SpringでHibernate 5をブートストラップする

SpringでHibernate 5をブートストラップする

1. 概要

この記事では、JavaとXMLの両方の構成を使用してbootstrap Hibernate 5 with Springを実行する方法について説明します。

2. 春の統合

ネイティブのHibernateAPIを使用してSessionFactoryをブートストラップするのは少し複雑で、かなりの数行のコードが必要になります(本当に必要な場合は、official documentationを確認してください)。

幸い、Spring supports bootstrapping the SessionFactoryであるため、必要なのは数行のJavaコードまたはXML構成のみです。

また、ジャンプする前に、古いバージョンのHibernateを使用している場合は、SpringのHibernate 3Hibernate 4に関する記事を参照してください。

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を使用します。これは、Springが提供するDriverManagerDataSourceよりも本番環境に適しています。


    org.apache.tomcat
    tomcat-dbcp
    9.0.1

4. 設定

前に述べたように、SpringはHibernateSessionFactoryのブートストラップで私たちをサポートしています。

私たちがしなければならないのはdefine some beans as well as a few parametersにすることだけです。

Springには、JavaベースとXMLベースの方法であるtwo options for these configurationsがあります。

4.1. Java構成の使用

SpringでHibernate5を使用する場合、Hibernate 4以降ほとんど変更されていません。org.springframework.orm.hibernate4の代わりにパッケージorg.springframework.orm.hibernate5LocalSessionFactoryBeanを使用する必要があります。

以前のHibernate4と同様に、LocalSessionFactoryBeanDataSource、およびPlatformTransactionManagerのBeanと、いくつかの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設定の使用

2番目のオプションとして、configure Hibernate 5 with an XML-based configurationを実行することもできます。




    
        
        
        
            
                
                    create-drop
                
                
                    org.hibernate.dialect.H2Dialect
                
            
        
    

    
        
        
        
        
    

    
        
    

簡単にわかるように、以前のJavaベースの構成とまったく同じBeanとパラメーターを定義しています。

To bootstrap the XML into the Spring context、アプリケーションがJava構成で構成されている場合は、単純なJava構成ファイルを使用できます。

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

あるいは、全体的な構成が純粋にXMLである場合、XMLファイルをSpring Contextに単純に提供できます。

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 supportedlist of supported dialectsを見ることができます。

7. 結論

このクイックチュートリアルでは、we configured Spring with Hibernate 5 –JavaとXMLの両方の構成を使用します。

いつものように、例の完全なソースコードはover on GitHubで入手できます。