迁移指南
以下章节解释了如何迁移到更新版本的 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
中的类型
如果您直接使用这些类型,建议您检查并更新导入项。