リアクティブ Couchbase リポジトリ

導入

この章では、couchbase のリアクティブリポジトリサポートについて説明します。これは、Couchbase リポジトリで説明されているコアリポジトリサポートに基づいています。そこで説明されている基本概念をしっかりと理解していることを確認してください。

リアクティブ組成物 ライブラリ

Couchbase Java SDK 3.x は RxJava から Reactor に移行したため、リアクティブ Spring エコシステムと非常にうまく調和しています。

リアクティブ Couchbase リポジトリは、プロジェクト Reactor ラッパー型を提供し、ライブラリ固有のリポジトリインターフェースの 1 つから単純に拡張するだけで使用できます。

  • ReactiveCrudRepository

  • ReactiveSortingRepository

使用方法

まずは簡単なエンティティを作成しましょう。

例 1: サンプル Person エンティティ
public class Person {

  @Id
  private String id;
  private String firstname;
  private String lastname;
  private Address address;

  // … getters and setters omitted
}

対応するリポジトリの実装は次のようになります。

例 2: Person エンティティを永続化する基本的なリポジトリインターフェース
public interface ReactivePersonRepository extends ReactiveSortingRepository<Person, Long> {

  Flux<Person> findByFirstname(String firstname);

  Flux<Person> findByFirstname(Publisher<String> firstname);

  Flux<Person> findByFirstnameOrderByLastname(String firstname, Pageable pageable);

  Mono<Person> findByFirstnameAndLastname(String firstname, String lastname);
}

JavaConfig の場合は、@EnableReactiveCouchbaseRepositories アノテーションを使用します。アノテーションは、名前空間要素とまったく同じ属性を持ちます。基本パッケージが構成されていない場合、インフラストラクチャーはアノテーション付き構成クラスのパッケージをスキャンします。

また、spring boot セットアップで使用している場合は、アノテーションが自動的に設定されるため、このアノテーションを省略できる可能性があることにも注意してください。

例 3: リポジトリ用の JavaConfig
@Configuration
@EnableReactiveCouchbaseRepositories
class ApplicationConfig extends AbstractCouchbaseConfiguration {
	// ... (see configuration for details)
}

ドメインリポジトリは ReactiveSortingRepository を継承するため、エンティティへの並べ替えられたアクセスのメソッドだけでなく、CRUD 操作も提供します。リポジトリインスタンスの操作は、依存関係をクライアントに注入するだけの問題です。

例 4: 人物エンティティへのソートされたアクセス
public class PersonRepositoryTests {

    @Autowired
    ReactivePersonRepository repository;

    @Test
    public void sortsElementsCorrectly() {
      Flux<Person> persons = repository.findAll(Sort.by(new Order(ASC, "lastname")));
      assertNotNull(perons);
    }
}

リポジトリとクエリ

Spring Data のリアクティブ Couchbase には、ブロッキングリポジトリとクエリによってすでに提供されている完全なクエリサポートが付属しています。