Tomasz Nurkiewicz<p>I struggle to find the benefits of <a href="https://fosstodon.org/tags/Spring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Spring</span></a> <a href="https://fosstodon.org/tags/R2DBC" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>R2DBC</span></a>. It's a full rewrite of <a href="https://fosstodon.org/tags/JDBC" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>JDBC</span></a> API using non-blocking I/O. However, typical application shouldn't open more than a handful of DB connections. So, just a few threads blocked on I/O (plus some threads queued up) shouldn't be an issue. Unless you want to be purely reactive or you are connecting to massively scalable database. But in that case, virtual threads come in handy. So what's the point? <a href="https://fosstodon.org/tags/Java" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Java</span></a> <a href="https://fosstodon.org/tags/reactive" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>reactive</span></a></p>