迁移指南
以下部分将解释如何迁移到新版本的 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
中的类型
我们建议您如果直接使用这些类型,请检查并更新您的导入。
重大变更
-
OutboundRow
和语句映射器从使用SettableValue
切换为使用Parameter
-
仓库工厂支持需要
o.s.r2dbc.core.DatabaseClient
而不是o.s.data.r2dbc.core.DatabaseClient
。
依赖项变更
要使用 Spring R2DBC,请确保包含以下依赖项:
org.springframework:spring-r2dbc