遷移指南
以下章節解釋瞭如何遷移到更新版本的 Spring Data R2DBC。
從 1.1.x 升級到 1.2.x
開發 Spring Data R2DBC 的目的是評估 R2DBC 與 Spring 應用的整合效果。主要方面之一是在 R2DBC 支援被證明有用後,將核心支援遷移到 Spring Framework 中。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 操作的流式 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
)可透過R2dbcEntityTemplate
獲取,該類在版本 1.1 中引入。 -
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
中的型別
如果您直接使用這些型別,建議您檢查並更新匯入項。