Migration Guide

以下部分说明如何迁移到 Spring Data R2DBC 的较新版本。

Upgrading from 1.1.x to 1.2.x

Spring Data R2DBC 的开发意在评估 R2DBC 与 Spring 应用程序的集成效果如何。一旦 R2DBC 支持证明是有用的,主要方面之一是将核心支持移入 Spring Framework。Spring Framework 5.3 附带一个新模块:Spring R2DBC (spring-r2dbc)。

spring-r2dbc 附带最初由 Spring Data R2DBC 提供的核心 R2DBC 功能(DatabaseClient 的精简变体、事务管理器、连接工厂初始化、异常转换)。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 组件。

Deprecations

  • 弃用 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 包。使用可以在 o.s.r2dbc.connection 处找到的 Spring R2DBC 变体。

  • 弃用 o.s.d.r2dbc.convert.ColumnMapRowMapper。改为使用 o.s.r2dbc.core.ColumnMapRowMapper

  • 弃用绑定支持类 o.s.d.r2dbc.dialect.BindingsBindMarkerBindMarkersBindMarkersFactory 及相关类型。使用从 org.springframework.r2dbc.core.binding 的替换项。

  • 弃用 BadSqlGrammarExceptionUncategorizedR2dbcException 以及在 o.s.d.r2dbc.support 中的异常转换。Spring R2DBC 提供了一个精简的异常转换变体,目前没有 SPI,可以通过 o.s.r2dbc.connection.ConnectionFactoryUtils#convertR2dbcException 获取。

Usage of replacements provided by Spring R2DBC

为了轻松迁移,一些已弃用的类型现在是 Spring R2DBC 提供的替换类型的子类型。Spring Data R2DBC 更改了几个方法,或者引入了新的方法,以接受 Spring R2DBC 类型。具体来说,更改了以下类:

  • R2dbcEntityTemplate

  • R2dbcDialect

  • Types in org.springframework.data.r2dbc.query

如果您直接使用这些类型,我们建议您查看并更新您的导入。

Breaking Changes

  • OutboundRow 和语句映射器改用 Parameter,不再使用 SettableValue

  • 存储库工厂支持需要 o.s.r2dbc.core.DatabaseClient,而不是 o.s.data.r2dbc.core.DatabaseClient

Dependency Changes

要使用 Spring R2DBC,请确保包含以下依赖项:

  • org.springframework:spring-r2dbc