Spring Data R2DBC
1.2.3より大きな Spring Data ファミリーの一部である Spring Data R2DBC を使用すると、R2DBC ベースのリポジトリを簡単に実装できます。R2DBC は Reactive Relational Database Connectivity: GitHub (英語) の略で、リアクティブドライバーを使用してリレーショナルデータベースを統合するインキュベーターです。Spring Data R2DBC は、おなじみの Spring 抽象化と R2DBC のリポジトリサポートを適用します。これにより、リアクティブアプリケーションスタックでリレーショナルデータアクセステクノロジーを使用する Spring を利用したアプリケーションの構築が容易になります。
Spring Data R2DBC は、概念的に簡単であることを目指しています。これを実現するために、ORM フレームワークのキャッシュ、遅延読み込み、ライトビハインド、またはその他の多くの機能を提供していません。これにより、Spring Data R2DBC は、シンプルで限定された、強固なオブジェクトマッパーになります。
Spring Data R2DBC を使用すると、関数アプローチでデータベースと対話し、アプリケーションのエントリポイントとして DatabaseClient
を提供できます。
データベースドライバーを選択して開始し、DatabaseClient
インスタンスを作成します。
Postgres: GitHub (英語) (
io.r2dbc:r2dbc-postgresql
)H2: GitHub (英語) (
io.r2dbc:r2dbc-h2
)Microsoft SQL Server: GitHub (英語) (
io.r2dbc:r2dbc-mssql
)
PostgresqlConnectionFactory connectionFactory = new PostgresqlConnectionFactory(PostgresqlConnectionConfiguration.builder()
.host(…)
.database(…)
.username(…)
.password(…).build());
DatabaseClient client = DatabaseClient.create(connectionFactory);
Mono<Integer> affectedRows = client.execute()
.sql("UPDATE person SET name = 'Joe'")
.fetch().rowsUpdated();
Flux<Person> all = client.execute()
.sql("SELECT id, name FROM person")
.as(Person.class)
.fetch().all();
クライアント API は、次の機能を提供します。
汎用 SQL の実行と更新カウント / 行の結果の消費。
ページングと順序付けを行う汎用
SELECT
。ページングおよび順序付けされたマッピングされたオブジェクトの
SELECT
。パラメーターバインディングを使用する汎用
INSERT
。マッピングされたオブジェクトの
INSERT
。ネイティブ構文を使用したパラメーターバインディング。
結果の消費: 更新カウント、マッピングなし(
Map<String, Object>
)、エンティティへのマッピング、抽出機能。@Query
アノテーション付きメソッドを使用したリアクティブリポジトリ。トランザクション管理。
Spring Boot 構成
ドキュメント
1.2.3 CURRENT GA | リファレンスドキュメント | API ドキュメント |
1.3.0-SNAPSHOT SNAPSHOT | ||
1.3.0-M2 PRE | リファレンスドキュメント | API ドキュメント |
1.2.4-SNAPSHOT SNAPSHOT | ||
1.1.7.BUILD-SNAPSHOT SNAPSHOT | ||
1.1.6.RELEASE GA | リファレンスドキュメント | API ドキュメント |