データ]** リンク:/category/persistence/spring-persistence/[Spring Persistence]


1概要

このクイックガイドでは、Spring Data APIをApache Igniteプラットフォームと統合する方法に焦点を当てます。

Apache Igniteについて学ぶためには、リンクをチェックしてください:/apache-ignite[前のガイド]。


2 Mavenのセットアップ

既存の依存関係に加えて、Spring Dataサポートを有効にする必要があります。

<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-spring-data</artifactId>
    <version>${ignite.version}</version>
</dependency>


ignite-spring-data

成果物はhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.apache.ignite%22%20AND%20a%3A%22ignite-からダウンロードできます。春のデータ%22[Maven Central]。


3モデルとリポジトリ

統合を実証するために、Spring Data APIを使用して、

従業員

をIgniteのキャッシュに格納するアプリケーションを作成します。


EmployeeDTO

のPOJOは次のようになります。

public class EmployeeDTO implements Serializable {

    @QuerySqlField(index = true)
    private Integer id;

    @QuerySqlField(index = true)
    private String name;

    @QuerySqlField(index = true)
    private boolean isEmployed;

   //getters, setters
}

ここで、

@ QuerySqlField

アノテーションを使用すると、SQLを使用してフィールドを照会できます。

次に、

Employee

オブジェクトを永続化するためのリポジトリを作成します。

@RepositoryConfig(cacheName = "baeldungCache")
public interface EmployeeRepository
  extends IgniteRepository<EmployeeDTO, Integer> {
    EmployeeDTO getEmployeeDTOById(Integer id);
}

  • Apache Igniteは、Spring Dataの

    CrudRepository

    から拡張された独自の

    IgniteRepository

    を使用しています。

これは標準のCRUDメソッドをサポートしますが、IDを必要としないものはいくつかあります。その理由については、テストのセクションで詳しく説明します。


  • RepositoryConfig

    アノテーションは、

    EmployeeRepository

    をIgniteの

    baeldungCache

    にマッピングします。


4スプリング構成

それでは、Spring構成クラスを作成しましょう。

  • Igniteリポジトリのサポートを追加するために

    @ EnableIgniteRepositories

    アノテーションを使用します。**

@Configuration
@EnableIgniteRepositories
public class SpringDataConfig {

    @Bean
    public Ignite igniteInstance() {
        IgniteConfiguration config = new IgniteConfiguration();

        CacheConfiguration cache = new CacheConfiguration("baeldungCache");
        cache.setIndexedTypes(Integer.class, EmployeeDTO.class);

        config.setCacheConfiguration(cache);
        return Ignition.start(config);
    }
}

ここで、

igniteInstance()メソッドは、Apache Igniteクラスターにアクセスするために、

Ignite

インスタンスを作成して

IgniteRepositoryFactoryBean__に渡します。


baeldungCache

設定も定義して設定しました。


setIndexedTypes()

メソッドは、キャッシュのSQLスキーマを設定します。


5リポジトリのテスト

アプリケーションをテストするには、

SpringDataConfiguration

をアプリケーションコンテキストに登録し、そこから

EmployeeRepository

を取得します。

AnnotationConfigApplicationContext context
 = new AnnotationConfigApplicationContext();
context.register(SpringDataConfig.class);
context.refresh();

EmployeeRepository repository = context.getBean(EmployeeRepository.class);

次に、

EmployeeDTO

インスタンスを作成してキャッシュに保存します。

EmployeeDTO employeeDTO = new EmployeeDTO();
employeeDTO.setId(1);
employeeDTO.setName("John");
employeeDTO.setEmployed(true);

repository.save(employeeDTO.getId(), employeeDTO);

ここでは

IgniteRepository



save(key、value)

メソッドを使いました。これは、標準の

CrudRepository保存(エンティティ)、保存(エンティティ)、削除(エンティティ)

操作がまだサポートされていないためです。

この背景にある問題は、

CrudRepository.save()

メソッドによって生成されたIDがクラスタ内で一意ではないということです。

代わりに、__save(key、value)、save(Map <ID、Entity> values)、deleteAll(Iterable <ID> ids)メソッドを使用する必要があります。

その後、Spring Dataの

getEmployeeDTOById()

メソッドを使用して、キャッシュから従業員オブジェクトを取得できます。

EmployeeDTO employee = repository.getEmployeeDTOById(employeeDTO.getId());
System.out.println(employee);

出力は初期オブジェクトの取得に成功したことを示しています。

EmployeeDTO{id=1, name='John', isEmployed=true}

あるいは、

IgniteCache

APIを使用して同じオブジェクトを取得することもできます。

IgniteCache<Integer, EmployeeDTO> cache = ignite.cache("baeldungCache");
EmployeeDTO employeeDTO = cache.get(employeeId);

または標準SQLを使用して:

SqlFieldsQuery sql = new SqlFieldsQuery(
  "select **  from EmployeeDTO where isEmployed = 'true'");


6. 概要

この短いチュートリアルでは、Spring Data FrameworkをApache Igniteプロジェクトと統合する方法を説明します。実例を使って、Spring Data APIを使ってApache Igniteキャッシュを扱うことを学びました。

いつものように、この記事の完全なコードはhttps://github.com/eugenp/tutorials/tree/master/libraries-data/[GitHub project]にあります。