SlideShare a Scribd company logo
Submit Search
Upload
Full Steam Ahead, R2DBC!
Report
VMware Tanzu
VMware Tanzu
Follow
•
2 likes
•
407 views
1
of
36
Full Steam Ahead, R2DBC!
•
2 likes
•
407 views
Download Now
Download to read offline
Report
Software
SpringOne 2020 Mark Paluch: Spring Data Project Lead, VMware
Read more
VMware Tanzu
VMware Tanzu
Follow
Recommended
Going Serverless Using the Spring Framework Ecosystem
VMware Tanzu
288 views
•
31 slides
Enabling Cloud Native Buildpacks for Windows Containers
VMware Tanzu
434 views
•
36 slides
Spring Boot Loves K8s
VMware Tanzu
839 views
•
43 slides
You Want to Kubernetes? You MUST Know Containers!
VMware Tanzu
264 views
•
48 slides
Connecting Spring Apps to Distributed SQL Clusters Running in Kubernetes
VMware Tanzu
207 views
•
18 slides
Introducing Spring Framework 5.3
VMware Tanzu
855 views
•
20 slides
More Related Content
What's hot
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
VMware Tanzu
935 views
•
47 slides
Spring Boot on Amazon Web Services with Spring Cloud AWS
VMware Tanzu
1.2K views
•
105 slides
Spring Boot Observability
VMware Tanzu
496 views
•
20 slides
Spring Data JDBC: Beyond the Obvious
VMware Tanzu
804 views
•
20 slides
State of Steeltoe 2020
VMware Tanzu
233 views
•
44 slides
Spring Native and Spring AOT
VMware Tanzu
1.6K views
•
61 slides
What's hot
(20)
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
VMware Tanzu
•
935 views
Spring Boot on Amazon Web Services with Spring Cloud AWS
VMware Tanzu
•
1.2K views
Spring Boot Observability
VMware Tanzu
•
496 views
Spring Data JDBC: Beyond the Obvious
VMware Tanzu
•
804 views
State of Steeltoe 2020
VMware Tanzu
•
233 views
Spring Native and Spring AOT
VMware Tanzu
•
1.6K views
Introducing Spring Cloud Gateway and API Hub for VMware Tanzu
VMware Tanzu
•
1.5K views
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
VMware Tanzu
•
872 views
Micronaut: A new way to build microservices
Luram Archanjo
•
369 views
“Sh*^%# on Fire, Yo!”: A True Story Inspired by Real Events
VMware Tanzu
•
350 views
Spring: Your Next Java Micro-Framework
VMware Tanzu
•
457 views
Walking Through Spring Cloud Data Flow
VMware Tanzu
•
745 views
Improving Your Company’s Health with Middleware Takeout
VMware Tanzu
•
380 views
The Path Towards Spring Boot Native Applications
VMware Tanzu
•
788 views
From Monolith to K8s - Spring One 2020
Mauricio (Salaboy) Salatino
•
1.2K views
What’s New in Spring Data MongoDB
VMware Tanzu
•
395 views
Spring Boot—Production Boost
VMware Tanzu
•
660 views
Peering Inside the Black Box: A Case for Observability
VMware Tanzu
•
166 views
Developers Are Users, Too
VMware Tanzu
•
259 views
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
VMware Tanzu
•
235 views
Similar to Full Steam Ahead, R2DBC!
Spring Update | July 2023
VMware Tanzu
68 views
•
37 slides
Modernizing Web Apps with .NET 6.pptx
Ed Charbeneau
65 views
•
34 slides
Modernizing Web Apps with .NET 6.pptx
Ed Charbeneau
105 views
•
34 slides
Reactive Web Applications
Rossen Stoyanchev
9K views
•
52 slides
Developing Real-Time Data Pipelines with Apache Kafka
Joe Stein
2.7K views
•
40 slides
Ratpack - SpringOne2GX 2015
Daniel Woods
3.1K views
•
56 slides
Similar to Full Steam Ahead, R2DBC!
(20)
Spring Update | July 2023
VMware Tanzu
•
68 views
Modernizing Web Apps with .NET 6.pptx
Ed Charbeneau
•
65 views
Modernizing Web Apps with .NET 6.pptx
Ed Charbeneau
•
105 views
Reactive Web Applications
Rossen Stoyanchev
•
9K views
Developing Real-Time Data Pipelines with Apache Kafka
Joe Stein
•
2.7K views
Ratpack - SpringOne2GX 2015
Daniel Woods
•
3.1K views
Angular (v2 and up) - Morning to understand - Linagora
LINAGORA
•
480 views
JDBC, What Is It Good For?
VMware Tanzu
•
619 views
Building .NET Microservices
VMware Tanzu
•
3.9K views
Welcome to the Reactive Revolution:RSocket and Spring Cloud Gateway - Spencer...
VMware Tanzu
•
2.7K views
Spring Boot 3 And Beyond
VMware Tanzu
•
130 views
CISOA Conference 2020 Banner 9 Development
Brad Rippe
•
162 views
Connecting your .Net Applications to NoSQL Databases - MongoDB & Cassandra
Lohith Goudagere Nagaraj
•
612 views
Under the Hood of Reactive Data Access (2/2)
VMware Tanzu
•
167 views
The New MariaDB Offering: MariaDB 10, MaxScale and More
MariaDB Corporation
•
7K views
Consumer Driven Contracts and Your Microservice Architecture
VMware Tanzu
•
529 views
Client vs Server Templating: Speed up initial load for SPA with Angular as an...
David Amend
•
11.7K views
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
WebStackAcademy
•
351 views
The Future Is The Cloud
Gatsbyjs
•
81 views
High performance stream processing
Glenn Renfro
•
224 views
More from VMware Tanzu
What AI Means For Your Product Strategy And What To Do About It
VMware Tanzu
71 views
•
38 slides
Make the Right Thing the Obvious Thing at Cardinal Health 2023
VMware Tanzu
61 views
•
23 slides
Enhancing DevEx and Simplifying Operations at Scale
VMware Tanzu
52 views
•
4 slides
Platforms, Platform Engineering, & Platform as a Product
VMware Tanzu
75 views
•
6 slides
Building Cloud Ready Apps
VMware Tanzu
54 views
•
73 slides
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
VMware Tanzu
70 views
•
17 slides
More from VMware Tanzu
(20)
What AI Means For Your Product Strategy And What To Do About It
VMware Tanzu
•
71 views
Make the Right Thing the Obvious Thing at Cardinal Health 2023
VMware Tanzu
•
61 views
Enhancing DevEx and Simplifying Operations at Scale
VMware Tanzu
•
52 views
Platforms, Platform Engineering, & Platform as a Product
VMware Tanzu
•
75 views
Building Cloud Ready Apps
VMware Tanzu
•
54 views
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
VMware Tanzu
•
70 views
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
VMware Tanzu
•
64 views
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
VMware Tanzu
•
43 views
tanzu_developer_connect.pptx
VMware Tanzu
•
153 views
Tanzu Virtual Developer Connect Workshop - French
VMware Tanzu
•
32 views
Tanzu Developer Connect Workshop - English
VMware Tanzu
•
90 views
Virtual Developer Connect Workshop - English
VMware Tanzu
•
26 views
Tanzu Developer Connect - French
VMware Tanzu
•
13 views
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
VMware Tanzu
•
77 views
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
VMware Tanzu
•
114 views
SpringOne Tour: The Influential Software Engineer
VMware Tanzu
•
39 views
SpringOne Tour: Domain-Driven Design: Theory vs Practice
VMware Tanzu
•
22 views
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
VMware Tanzu
•
36 views
SpringOne Tour: Doing Progressive Delivery with your Team
VMware Tanzu
•
16 views
SpringOne Tour: Make the Right Thing the Obvious Thing: The Journey to Intern...
VMware Tanzu
•
36 views
Recently uploaded
How Much Does It Cost To Develop A Mobile App?
iCoderz Solutions
8 views
•
1 slide
Overcoming CMake Configuration Issues Webinar
ICS
83 views
•
38 slides
Technical documentation support in Pharo
ESUG
8 views
•
39 slides
WHMCS CUSTOM SERVICES
WHMCS Smarters
16 views
•
7 slides
IBM MQ Whats new - up to 9.3.4.pptx
Matt Leming
10 views
•
39 slides
Loading your Life into a Vector Database
Ben Church
12 views
•
52 slides
Recently uploaded
(20)
How Much Does It Cost To Develop A Mobile App?
iCoderz Solutions
•
8 views
Overcoming CMake Configuration Issues Webinar
ICS
•
83 views
Technical documentation support in Pharo
ESUG
•
8 views
WHMCS CUSTOM SERVICES
WHMCS Smarters
•
16 views
IBM MQ Whats new - up to 9.3.4.pptx
Matt Leming
•
10 views
Loading your Life into a Vector Database
Ben Church
•
12 views
Critical Control Leadership & Verifications: Operationalising Critical Contro...
myosh team
•
20 views
MAXQDA-24-Features-EN.pdf
Cheer Chain Enterprise Co., Ltd.
•
153 views
Cloudera Enabling Native Integration of NoSQL HBase with Cloud Providers.pdf
wchevreuil
•
46 views
Java-ML-lego-j-fall
Jago de Vreede
•
45 views
Building Intelligent Workplace Limits and Challenges RIGA COMM 2023
Muntis Rudzitis
•
33 views
ICCC2023 Statistics Report, has Common Criteria reached its peak?
Javier Tallón
•
5 views
AI Infra Day | Accelerate Your Model Training and Serving with Distributed Ca...
Alluxio, Inc.
•
11 views
Oxygen JSON Editor
Octavian Nadolu
•
20 views
Newsletter Linchpin AI Review ✍️ (Bonus Worth $997).pdf
LouisaHall2
•
6 views
3 AI Tools for Live Streamers
ontheflystream
•
9 views
Understanding Injury Risk in Ageing Workers for a Sustainable Workforce
myosh team
•
35 views
HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0
Martijn Dashorst
•
1K views
www.hyperdo.app to do app for adhd.pptx
Audrius Janulis
•
14 views
linux-namespaces.pdf
Ignat Korchagin
•
17 views
Full Steam Ahead, R2DBC!
1.
Full Steam Ahead! Mark
Paluch • Spring Data Project Lead, R2DBC Contributor • @mp911de
2.
Reactive Relational Database
Connectivity
3.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Mark Paluch ● Spring Data, R2DBC, Lettuce Redis Driver ● All things non-blocking ● @mp911de (Twitter, GitHub) 3
4.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 4 2009 Microsoft to release .NET 4.0 2013 Reactive Manifesto Initial Akka release 2014 RxJava 1.0 2015 Reactive Streams 1.0 Project Reactor 2.0 2016 RxJava 2.0 Akka Streams 1.0 Ratpack Spring WebFlux Micronaut Today RSocket Reactive Mongo Lettuce Cassandra vert.x Lagom Apple Servicetalk Helidon RxJava 3.0 Project Reactor 3.0
5.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Programming Models Have Changed ● Reactive applications typically stream-processing ● Push-based models ● Notifications, Events ● Is SQL the right choice for reactive applications? ● Depends on the Use-Case 5
6.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Reactive Programming ● High-efficiency applications ● Fundamentally non-blocking ● No opinion on async ● Key differentiators: (pull-push) back pressure, flow control 6
7.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Persistence ● ✅ Kafka ● ✅ MongoDB ● ✅ Cassandra ● ✅ Couchbase ● ✅ Redis ● ❌ Oracle, DB2, MySQL, MariaDB, Postgres, SQL Server* 7
8.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Persistence ● ✅ Kafka ● ✅ MongoDB ● ✅ Cassandra ● ✅ Couchbase ● ✅ Redis ● ❌ Oracle, DB2, MySQL, MariaDB, Postgres, SQL Server* 8
9.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Non-blocking SQL Persistence (1/3) ● MySQL: X DevAPI (Document Store API): CompletableFuture ● vert.x Postgres Driver: Callback API ● jasync-sql: CompletableFuture ● Common API 🤕 9
10.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Non-blocking SQL Persistence (2/3) ● JDBC on ThreadPool ● RxJava JDBC ● Blocks still threads ● Project Loom: Production readiness unknown ● Requires proper queuing and capacity controls 10
11.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Non-blocking SQL Persistence (3/3) ● ADBA (Asynchronous Database API) ● Standard-API ● Based heavily on CompletableFuture ● Discontinued in favor of Project Loom 11
12.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 12 Standard API for reactive programming with SQL databases on the JVM
13.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Project of
14.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Design Principles ● Embrace Reactive Types and Patterns ● Low barrier to entry (depends on Reactive Streams and Java 8 only) ● Non-blocking, all the way to the database ● De-duplicate driver efforts ● Documented specification ● Shrink the driver SPI ● Enable multiple "humane" APIs 14
15.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Simple Select 15 Publisher<String> values = connectionFactory.create() .flatMapMany(conn -> conn.createStatement("SELECT value FROM test") .execute() .flatMap(result -> result.map((row, metadata) -> row.get("value", String.class))))
16.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ R2DBC 0.8 ● Stable release ● End-to-end reactive non-blocking database communication ● Batching ● BLOB/CLOB ● Extensive Type Conversion ● Savepoints ● Transactions ● Leveraging Database-specific features ● ServiceLoader-based Driver discovery ● Connection URLs ● Categorized exceptions (Bad grammar, Data integrity violation, …) 16
17.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ R2DBC 0.9 / 1.0 ● Evolution of the specification ● Extended transaction spec ● Improved In/Out Parameter Bindings ● Investigation on stored procedures ● No real demand so far ● Scheduled for 2021 17
18.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ R2DBC Ecosystem ● Specification document ● R2DBC SPI ● R2DBC Proxy ● Connection Pooling ● Client Implementations ● Spring ● Querydsl ● R2DBC Migrate ● Kotysa ● Testcontainers ● Driver Community ● Google Cloud Spanner ● H2 ● Microsoft SQL Server ● MySQL Driver (r2dbc-mysql, jasync-sql) ● MariaDB ● PostgreSQL ● SAP Hana ● Oracle (work in progress) ● DB2 (work in progress) 18
19.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Community Projects ● Specification document ● R2DBC SPI ● R2DBC Proxy ● Connection Pooling ● Client Implementations ● Spring ● Querydsl ● R2DBC Migrate ● Kotysa ● Testcontainers ● Driver Community ● Google Cloud Spanner ● H2 ● Microsoft SQL Server ● MySQL Driver (r2dbc-mysql, jasync-sql) ● MariaDB ● PostgreSQL ● SAP Hana ● Oracle (work in progress) ● DB2 (work in progress) 19
20.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ R2DBC Clients: Work in Progress ● MyBatis (#1444) ● JDBI (#1454) ● jOOQ (#6298) ● Querydsl (#2468) ● Liquibase (CORE-3419) ● Flyway (#2502) ● Exposed (#456) ● Micronaut (#416) ● Go vote for a client you want to see happen. 20
21.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ What R2DBC gives you ● Move Thread congestion out of JVM ● Achieve more with less Threads ● Doesn’t change law of physics ● Follow well-known SQL database interaction patterns ● Database laws still apply ● Obey wire protocol rules ● ACID rules 21
22.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring ❤ R2DBC
23.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring and R2DBC ● 2018/2019 ● First steps with Spring Data R2DBC 1.0 ● 2020 ● Migration of core R2DBC support from Spring Data to Spring Framework 5.3 ● Deprecations in Spring Data R2DBC 1.2 23
24.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring R2DBC ● Central class: DatabaseClient ● BindMarker SPI ● Reactive Transaction Manager ● Schema initialization support ● ConnectionFactory implementations (e.g. AbstractRoutingConnectionFactory) 24
25.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ DatabaseClient DatabaseClient client = DatabaseClient.create(connectionFactory); Flux<Person> people = client .sql("SELECT firstname, lastname FROM person WHERE age > :age") .bind("age", 42) .filter(statement -> statement.fetchSize(20)) .map(row -> new Person(row.get("firstname", String.class), row.get("lastname", String.class))) .all(); 25
26.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ ConnectionFactoryInitializer @Bean ConnectionFactoryInitializer initializer(ConnectionFactory connectionFactory) { ConnectionFactoryInitializer initializer = new ConnectionFactoryInitializer(); initializer.setConnectionFactory(connectionFactory); initializer.setDatabasePopulator(new ResourceDatabasePopulator( new ClassPathResource("schema.sql"))); return initializer; } 26
27.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Data R2DBC ● Mapped entity support through R2dbcEntityOperations ● Query and Update objects ● Dialect-awareness ● Repository abstraction ● Sorry, no mapped relations yet 27
28.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ R2dbcEntityTemplate R2dbcEntityTemplate entityTemplate = …; Flux<Person> people = entityTemplate.select(Person.class) .from("people") .matching(query(where("age").greaterThan(42)) .limit(10) .offset(20) .sort(by("firstname"))) .all(); 28
29.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ R2dbcEntityTemplate R2dbcEntityTemplate entityTemplate = …; Flux<Person> people = entityTemplate.select(Person.class) .from("people") .matching(query(where("age").greaterThan(42)) .limit(10) .offset(20) .sort(by("firstname"))) .all(); 29 query(where("age").greaterThan(42)) .limit(10) .offset(20) .sort(by("firstname"))
30.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Repositories interface PersonRepository extends ReactiveSortingRepository<Person, Integer> { Flux<Person> findByFirstnameContains(String name); Flux<Person> findFirst10By(); Flux<Person> findAllByOrderByLastname(Pageable pageable); @Modifying @Query("DELETE FROM person WHERE age = :age") Mono<Void> deleteAllByAge(int age); @Modifying @Query("DELETE FROM person") Mono<Integer> deleteAllAndReturnCount(); } 30
31.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Data R2DBC 1.2: New and Noteworthy ● Entity Callbacks ● Before/After Convert, Before/After Save ● Auditing ● SpEL Context Extensions ● Enum value revision ● Repository metrics SPI 31
32.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Entity Callbacks @FunctionalInterface interface BeforeConvertCallback<T> extends EntityCallback<T> { Publisher<T> onBeforeConvert(T entity, SqlIdentifier table); } 32
33.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Entity Callback in Action @Bean BeforeConvertCallback<Person> autogeneratedId(DatabaseClient client) { return (entity, table) -> { if (entity.getId() == null) { return client.sql("SELECT nextval('person_seq')") .map(row -> row.get(0, Integer.class)) .first() .map(entity::withId); } return Mono.just(entity); }; } 33
34.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Outlook: Spring Data R2DBC 2.0 ● Closer alignment of Spring Data JDBC and Spring Data R2DBC ● Evolution of Spring Data Relational 34
35.
Thank you. r2dbc.io @mp911de
36.
Unless otherwise indicated,
these slides are © 2013-2020 vmware and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Resources ● Website https://r2dbc.io ● Twitter @r2dbc ● GitHub https://github.com/r2dbc ● Mailing List https://groups.google.com/forum/ #!forum/r2dbc ● Monthly Call 1st Friday of Month 0630 PT/0930 ET/1530 CET 36