TL; DR: Использование SQL.
Spring Data DatabaseClient
- улучшенный и реактивный вариант для R2DB C того, что JdbcTemplate
для JDB C. Он включает в себя различные режимы выполнения, управление ресурсами и трансляцию исключений. Его беглые методы выбора / вставки / обновления / удаления API-интерфейса подходят для простых и простых запросов. Все, что выходит за рамки предоставленного API, подлежит SQL использованию.
Как говорится, метод, который вы ищете: DatabaseClient.execute(…)
:
DatabaseClient client = …;
client.execute("SELECT person.age, address.street FROM person INNER JOIN address ON person.address = address.id");
То же самое происходит для репозитория @Query
методов.
Вызов базы данных во время обработки результатов - это хороший способ заблокировать всю обработку результатов, поскольку результаты выбираются по потоку. Выполнение запроса, когда не все результаты получены, но может исчерпать буфер предварительной выборки из 128 или 256 элементов и привести к зависанию потока результатов. Кроме того, вы создаете проблему N + 1.