Spring Data R2DBC, part of the larger Spring Data family, makes it easy to implement R2DBC based repositories. R2DBC stands for Reactive Relational Database Connectivity, an incubator to integrate relational databases using a reactive driver. Spring Data R2DBC applies familiar Spring abstractions and repository support for R2DBC. It makes it easier to build Spring-powered applications that use relational data access technologies in a reactive application stack.
Spring Data R2DBC aims at being conceptually easy. In order to achieve this it does NOT offer caching, lazy loading, write behind or many other features of ORM frameworks. This makes Spring Data R2DBC a simple, limited, opinionated object mapper.
Spring Data R2DBC allows a functional approach to interact with your database providing DatabaseClient as the entry point for applications.
Get started by picking a database driver and create a DatabaseClient instance:
Postgres (io.r2dbc:r2dbc-postgresql) H2 (io.r2dbc:r2dbc-h2) Microsoft SQL Server (io.r2dbc:r2dbc-mssql)
PostgresqlConnectionFactory connectionFactory = new PostgresqlConnectionFactory(PostgresqlConnectionConfiguration.builder()
DatabaseClient client = DatabaseClient.create(connectionFactory);
Mono affectedRows = client.execute()
.sql(“UPDATE person SET name = ‘Joe’”)
Flux all = client.execute()
.sql(“SELECT id, name FROM person”)
The client API provides covers the following features:
Execution of generic SQL and consumption of update count/row results. Generic SELECT with paging and ordering. SELECT of mapped objects with paging and ordering. Generic INSERT with parameter binding. INSERT of mapped objects. Parameter binding using the native syntax. Result consumption: Update count, unmapped (Map<String, Object>), mapped to entities, extraction function. Reactive repositories using @Query annotated methods. Transaction Management.
Quickstart Your Project
Bootstrap your application with Spring Initializr.