移行ガイド

次のセクションでは、Spring Data R2DBC の新しいバージョンに移行する方法について説明します。

1.1.x から 1.2.x へのアップグレード

Spring Data R2DBC は、R2DBC が Spring アプリケーションとどの程度統合できるかを評価することを目的として開発されました。主な側面の 1 つは、R2DBC サポートが有用であることが証明されたら、コアサポートを Spring Framework に移行することでした。Spring Framework 5.3 には、新しいモジュール Spring R2DBC(spring-r2dbc)が付属しています。

spring-r2dbc は、Spring Data R2DBC によって最初に提供されたコア R2DBC 機能(DatabaseClient のスリムなバリアント、トランザクションマネージャー、接続ファクトリの初期化、例外変換)を提供します。1.2.0 リリースは、次のセクションで概説するいくつかの変更を加えることにより、Spring R2DBC で提供されるものと一致します。

Spring R2DBC の DatabaseClient は、純粋な SQL 指向のインターフェースをカプセル化するより軽量な実装です。SQL ステートメントを実行する方法が DatabaseClient.execute(…) から DatabaseClient.sql(…) に変更されていることに気付くでしょう。CRUD 操作用の流れるような API は R2dbcEntityTemplate に移行しました。

ロガープレフィックス org.springframework.data.r2dbc を介して SQL ステートメントのロギングを使用する場合は、Spring R2DBC コンポーネントを指すように、必ず org.springframework.r2dbc に更新してください(つまり、.data を削除してください)。

非推奨

  • o.s.d.r2dbc.core.DatabaseClient とそのサポートクラス ConnectionAccessorFetchSpecSqlProvider およびその他のいくつかの非推奨。NamedParameterExpander などの名前付きパラメーターサポートクラスは、Spring R2DBC の DatabaseClient 実装によってカプセル化されているため、これはそもそも内部 API であったため、代替は提供していません。org.springframework.r2dbc.core から入手可能な o.s.r2dbc.core.DatabaseClient およびそれらの Spring R2DBC 代替を使用してください。エンティティベースのメソッド(select/insert/update/delete)メソッドは、バージョン 1.1 で導入された R2dbcEntityTemplate を介して利用できます。

  • o.s.d.r2dbc.connectionfactoryo.s.d.r2dbc.connectionfactory.inito.s.d.r2dbc.connectionfactory.lookup パッケージの非推奨。o.s.r2dbc.connection にある Spring R2DBC のバリアントを使用します。

  • o.s.d.r2dbc.convert.ColumnMapRowMapper の非推奨。代わりに o.s.r2dbc.core.ColumnMapRowMapper を使用してください。

  • バインディングサポートクラス o.s.d.r2dbc.dialect.BindingsBindMarkerBindMarkersBindMarkersFactory および関連する型の非推奨。org.springframework.r2dbc.core.binding の代替を使用してください。

  • BadSqlGrammarExceptionUncategorizedR2dbcException の非推奨、o.s.d.r2dbc.support での例外変換。Spring R2DBC は、現在 o.s.r2dbc.connection.ConnectionFactoryUtils#convertR2dbcException を通じて利用可能な SPI なしのスリムな例外変換バリアントを提供します。

Spring R2DBC が提供する代替の使用

移行を容易にするために、いくつかの非推奨の型は、Spring R2DBC によって提供されるそれらの代替のサブ型になりました。Spring Data R2DBC では、いくつかのメソッドが変更されたか、Spring R2DBC 型を受け入れる新しいメソッドが導入されました。具体的には、次のクラスが変更されます。

  • R2dbcEntityTemplate

  • R2dbcDialect

  • org.springframework.data.r2dbc.query の型

これらの型を直接操作する場合は、インポートを確認して更新することをお勧めします。

重大な変更

  • OutboundRow とステートメントマッパーが SettableValue の使用から Parameter に切り替わりました

  • リポジトリファクトリサポートには、o.s.data.r2dbc.core.DatabaseClient ではなく o.s.r2dbc.core.DatabaseClient が必要です。

依存関係の変更

Spring R2DBC を使用するには、次の依存関係を必ず含めてください。

  • org.springframework:spring-r2dbc