1. 概要

デフォルトでは、SpringDataはデフォルトのJPA実装プロバイダーとしてHibernateを使用します。

ただし、Hibernateは確かに私たちが利用できる唯一のJPA実装ではありません。

この記事では、EclipseLinkをSpring DataJPAの実装プロバイダーとしてセットアップするために必要な手順を説明します。

2. Mavenの依存関係

Springアプリケーションで使用するには、プロジェクトのpom.xmlorg.eclipse.persistence.jpa依存関係を追加する必要があります。

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.jpa</artifactId>
    <version>2.7.0</version>
</dependency>

デフォルトでは、SpringDataにはHibernate実装が付属しています。

代わりにEclipseLinkをJPAプロバイダーとして使用したいので、もう必要ありません。

したがって、依存関係を除外することで、プロジェクトから削除できます。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

次のステップは、JPA実装としてEclipseLinkを使用することをSpringFrameworkに通知することです。

3. スプリング構成

JpaBaseConfigurationは、SpringBootでJPAのBeanを定義する抽象クラスです。 カスタマイズするには、 createJpaVendorAdapter() getVendorProperties()などのメソッドを実装する必要があります。

Springは、HibernateJpaAutoConfigurationと呼ばれるHibernateの構成実装をすぐに提供します。 ただし、 EclipseLink、の場合、カスタム構成を作成する必要があります。

まず、使用するJPA実装を指定する createJpaVendorAdapter()メソッドを実装する必要があります。

Springは、このメソッドで使用するEclipseLinkJpaVendorAdapterと呼ばれるEclipseLink用のAbstractJpaVendorAdapterの実装を提供します。

@Configuration 
public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration { 

    @Override 
    protected AbstractJpaVendorAdapter createJpaVendorAdapter() { 
        return new EclipseLinkJpaVendorAdapter(); 
    }
    
    //...
}

また、いくつかを定義する必要があります EclipseLinkによって使用されるベンダー固有のプロパティ。

これらは、 getVendorProperties()メソッドを介して追加できます。

@Override
protected Map<String, Object> getVendorProperties() {
    HashMap<String, Object> map = new HashMap<>();
    map.put(PersistenceUnitProperties.WEAVING, true);
    map.put(PersistenceUnitProperties.DDL_GENERATION, "drop-and-create-tables");
    return map;
}

クラスorg.eclipse.persistence.config.PersistenceUnitPropertiesには、EclipseLink。に対して定義できるプロパティが含まれています。

この例では、アプリケーションの実行時にウィービングを使用してデータベーススキーマを再作成することを指定しました。

以上です! これは、デフォルトのHibernateJPAプロバイダーからに変更するために必要な実装全体です。 EclipseLink。

SpringDataはJPAAPIを使用し、ベンダー固有のメソッドは使用しないことに注意してください。 したがって、理論的には、あるベンダーから別のベンダーに切り替えるときに問題はないはずです。

4. 結論

このクイックチュートリアルでは、SpringDataで使用されるデフォルトのJPA実装プロバイダーを変更する方法について説明しました。

デフォルトのHibernateからEclipseLink。に変更するのがいかに迅速で簡単かを見ました。

いつものように、例の完全な実装はGithub利用できます。