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
及其支援類別ConnectionAccessor
、FetchSpec
、SqlProvider
以及其他一些類別。諸如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.connectionfactory
、o.s.d.r2dbc.connectionfactory.init
和o.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.Bindings
、BindMarker
、BindMarkers
、BindMarkersFactory
和相關類型。請使用org.springframework.r2dbc.core.binding
中的替換項。 -
棄用
BadSqlGrammarException
、UncategorizedR2dbcException
以及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
中的類型
我們建議您檢閱並更新您的匯入,如果您直接使用這些類型。