移行ガイド
次のセクションでは、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とそのサポートクラスConnectionAccessor、FetchSpec、SqlProviderおよびその他のいくつかの非推奨。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.connectionfactory、o.s.d.r2dbc.connectionfactory.init、o.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.Bindings、BindMarker、BindMarkers、BindMarkersFactoryおよび関連する型の非推奨。org.springframework.r2dbc.core.bindingの代替を使用してください。BadSqlGrammarException、UncategorizedR2dbcExceptionの非推奨、o.s.d.r2dbc.supportでの例外変換。Spring R2DBC は、現在o.s.r2dbc.connection.ConnectionFactoryUtils#convertR2dbcExceptionを通じて利用可能な SPI なしのスリムな例外変換バリアントを提供します。
Spring R2DBC が提供する代替の使用
移行を容易にするために、いくつかの非推奨の型は、Spring R2DBC によって提供されるそれらの代替のサブ型になりました。Spring Data R2DBC では、いくつかのメソッドが変更されたか、Spring R2DBC 型を受け入れる新しいメソッドが導入されました。具体的には、次のクラスが変更されます。
R2dbcEntityTemplateR2dbcDialectorg.springframework.data.r2dbc.queryの型
これらの型を直接操作する場合は、インポートを確認して更新することをお勧めします。