Migration Guide

以下章節說明如何遷移至較新版本的 Spring Data R2DBC。

從 1.1.x 升級至 1.2.x

Spring Data R2DBC 的開發意圖是評估 R2DBC 與 Spring 應用程式的整合程度。其中一個主要方面是將核心支援移至 Spring Framework 中,一旦 R2DBC 支援證明是有用的。Spring Framework 5.3 隨附一個新模組:Spring R2DBC (spring-r2dbc)。

spring-r2dbc 提供了核心 R2DBC 功能(DatabaseClient 的精簡變體、交易管理器、連線工廠初始化、例外轉換),這些功能最初由 Spring Data R2DBC 提供。1.2.0 版本與 Spring R2DBC 中提供的功能一致,並進行了以下章節中概述的幾項變更。

Spring R2DBC 的 DatabaseClient 是一個更輕量級的實作,封裝了純粹以 SQL 為導向的介面。您會注意到,執行 SQL 陳述式的方法已從 DatabaseClient.execute(…) 變更為 DatabaseClient.sql(…)。用於 CRUD 操作的 Fluent API 已移至 R2dbcEntityTemplate 中。

如果您透過記錄器前綴 org.springframework.data.r2dbc 使用 SQL 陳述式的記錄功能,請務必將其更新為 org.springframework.r2dbc(即移除 .data),以指向 Spring R2DBC 組件。

棄用

  • 棄用 o.s.d.r2dbc.core.DatabaseClient 及其支援類別 ConnectionAccessorFetchSpecSqlProvider 以及其他一些類別。諸如 NamedParameterExpander 等具名參數支援類別已由 Spring R2DBC 的 DatabaseClient 實作封裝,因此我們不提供替換,因為這最初是內部 API。請使用 o.s.r2dbc.core.DatabaseClient 及其 Spring R2DBC 替換項,這些替換項可在 org.springframework.r2dbc.core 中找到。基於實體的方法 (select/insert/update/delete) 可透過版本 1.1 中引入的 R2dbcEntityTemplate 取得。

  • 棄用 o.s.d.r2dbc.connectionfactoryo.s.d.r2dbc.connectionfactory.inito.s.d.r2dbc.connectionfactory.lookup 套件。請使用 Spring R2DBC 的變體,您可以在 o.s.r2dbc.connection 中找到。

  • 棄用 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 提供了一個精簡的例外轉換變體,目前沒有 SPI,可透過 o.s.r2dbc.connection.ConnectionFactoryUtils#convertR2dbcException 取得。

使用 Spring R2DBC 提供的替換項

為了簡化遷移,一些已棄用的類型現在是 Spring R2DBC 提供的替換項的子類型。Spring Data R2DBC 變更了一些方法或引入了接受 Spring R2DBC 類型的新方法。特別是,以下類別已變更

  • R2dbcEntityTemplate

  • R2dbcDialect

  • org.springframework.data.r2dbc.query 中的類型

我們建議您檢閱並更新您的匯入,如果您直接使用這些類型。

重大變更

  • OutboundRow 和陳述式對應器已從使用 SettableValue 切換為使用 Parameter

  • Repository 工廠支援需要 o.s.r2dbc.core.DatabaseClient,而不是 o.s.data.r2dbc.core.DatabaseClient

相依性變更

若要使用 Spring R2DBC,請務必包含以下相依性

  • org.springframework:spring-r2dbc