Spring Data R2DBC

Spring%20Data%20R2DBC%20Docs 2088E9?logo=quickLook&logoColor=white Spring%20Boot%20Data%20R2DBC%20Docs 2088E9?logo=quickLook&logoColor=white Spring%20Data%20R2DBC%20API%20Docs DF7716?logo=devbox&logoColor=white

Spring Data R2DBC provides repository support for the Reactive Relational Database Connectivity (R2DBC) API.

JPA works with JDBC. JDBC is fully blocking API.

Maven Dependencies

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-r2dbc</artifactId>
</dependency>

In terms of databases, Spring Data R2DBC requires a driver to abstract common SQL functionality over vendor-specific flavours. Support for the databases can be checked here (you need to add chosen driver as Maven Dependency).

Initializing Database

You can initialize Database with 🟢 DatabaseConfig:

@Configuration
public class DatabaseConfig {

    @Value("classpath:/schema.sql")
    Resource resource; (1)

    @Bean
    ConnectionFactoryInitializer connectionFactoryInitializer(ConnectionFactory connectionFactory) {
        ConnectionFactoryInitializer initializer = new ConnectionFactoryInitializer(); (2)
        initializer.setConnectionFactory(connectionFactory); (3)
        initializer.setDatabasePopulator(new ResourceDatabasePopulator(resource)); (4)
        return initializer;
    }

}
1 Database SQL script which will be used to create schema. The schema.sql is located under src/main/resources
2 🟢 ConnectionFactoryInitializer is used to set up a database during initialization and clean up a database during destruction.
3 ⚪ ConnectionFactory is an R2DBC factory for creating connections and entry point for a driver.
4 🟢 ResourceDatabasePopulator populates, initializes, or cleans up a database using SQL scripts defined in external ⚪ Resource.