Files
spring-data-demo/r2dbc/README.md
T

26 lines
1.1 KiB
Markdown

# r2dbc
Companion code for the ankurm.com post
[Reactive Data Access with Spring Data R2DBC: CRUD, Transactions and When to Choose It](https://ankurm.com/spring-data-r2dbc-crud-transactions/).
Spring Boot 4.1.2, JDK 25, Spring Data R2DBC, r2dbc-postgresql 1.1.3.RELEASE, PostgreSQL 17 (Testcontainers 2.0.5).
## What is in here
- `Customer`, `PurchaseOrder`, `Account`: plain records, one row each. No relationship mapping.
- `CustomerRepository`: `ReactiveCrudRepository`, derived queries, `@Query`, `@Modifying`.
- `CustomerOrderService`: three ways to load customers with orders (1+N, two queries, one JOIN with `DatabaseClient`).
- `AccountService`: `@Transactional` and `TransactionalOperator`, with rollback on error.
- `schema.sql`: run by Spring Boot through the R2DBC connection at startup.
- Tests use `StepVerifier` and write the transcripts in `output/`.
## Run
```bash
cd r2dbc
./scripts/run-all.sh # needs Docker; regenerates output/*.txt
```
`output/07-throughput-indicative.txt` is an indicative JDBC vs R2DBC run on a shared 2-vCPU sandbox.
Treat it as a harness, not a result: run it on your own hardware.