迁移指南

以下部分解释了如何迁移到更新版本的 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 及其支持类 ConnectionAccessorFetchSpecSqlProvider 以及其他一些类。命名参数支持类(如 NamedParameterExpander)被 Spring R2DBC 的 DatabaseClient 实现封装,因此我们没有提供替换,因为这本来就是内部 API。使用 o.s.r2dbc.core.DatabaseClient 及其来自 org.springframework.r2dbc.core 的 Spring R2DBC 替换。基于实体的方法(select/insert/update/delete)方法可通过 R2dbcEntityTemplate 使用,该方法是在 1.1 版本中引入的。

  • 弃用 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 的替换。

  • 弃用 BadSqlGrammarExceptionUncategorizedR2dbcExceptiono.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