1概要

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

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

この記事では、http://www.eclipse.org/eclipselink/[

EclipseLink

]をSpring Data JPAの実装プロバイダーとして設定するために必要な手順を説明します。


2 Mavenの依存関係

Springアプリケーションでそれを使用するには、https://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22org.eclipse.persistence.jpa%22[

org.eclipseを追加するだけです。プロジェクトの

pom.xml

内の.persistence.jpa

]依存関係:

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

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

JPAプロバイダとして

EclipseLink

を代わりに使用したいので、もう必要ありません。

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

<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

を使いたいことをSpring Frameworkに伝えることです。


3スプリング構成


  • JpaBaseConfiguration

    は、Spring BootでJPA ** 用のBeanを定義する抽象クラスです。カスタマイズするには、

    createJpaVendorAdapter()



    getVendorProperties()

    などのメソッドをいくつか実装する必要があります。

SpringはHibernateに

HibernateJpaAutoConfiguration

と呼ばれる設定なしで設定実装を提供します。ただし、

EclipseLinkでは、

カスタム構成を作成する必要があります。

まず、使用するJPA実装を指定する

createJpaVendorAdapter()

メソッドを実装する必要があります。

Springは

EclipseLink

のために

EclipseLinkJpaVendorAdapter

** と呼ばれる

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.

に対して定義できるプロパティーが含まれています。

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

  • そしてそれだけです!** これはデフォルトのHibernate JPAプロバイダから

    EclipseLink.

    に変更するために必要な実装全体です。

Spring DataはJPA APIを使用しており、ベンダー固有のメソッドは使用していません。したがって、理論的には、あるベンダから別のベンダに切り替えても問題はありません。


4結論

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

デフォルトであるHibernateから__EclipseLinkに変更するのがどれほど迅速で簡単かを見ました。

いつものように、例の完全な実装はhttps://github.com/eugenp/tutorials/tree/master/persistence-modules/spring-data-eclipselink[over Github]で利用可能です。