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:

PostgreSQL Example
PostgresqlConnectionFactory connectionFactory = new PostgresqlConnectionFactory(PostgresqlConnectionConfiguration.builder()
		.host(…)
		.database(…)
		.username(…)
		.password(…).build());

DatabaseClient client = DatabaseClient.create(connectionFactory);

Mono<Integer> affectedRows = client.execute()
        .sql("UPDATE person SET name = 'Joe'")
        .fetch().rowsUpdated();

Flux<Person> all = client.execute()
        .sql("SELECT id, name FROM person")
        .as(Person.class)
        .fetch().all();

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.

Quick start

Bootstrap your application with Spring Initializr.

Documentation

Each Spring project has its own; it explains in great details how you can use project features and what you can achieve with them.
1.0.0 M1 PRE Reference Doc. API Doc.
1.0.0 SNAPSHOT Reference Doc. API Doc.

A few examples to try out: