Как организовать работу с базой данных в Spring WebFlux stack?
Контекст: хочу перед собезом хотя бы пощупать spring reactive stack в Java.
Собственно для этого решил перевести своё простенькое backend приложение на reactive stack, и R2DBC его часть. Очевидно, что неблокирующий I/O здесь крайне важен, но... R2DBC не поддерживает аннотации `@XtoX` отношений как и вообще работу с внешними ключами. Как из этой проблемы выходить? Я новичок и вижу единственное решение: использовать JPA. Конечно, есть обходные пути этой проблемы, но это выглядит не надёжно. Как эту проблему решают в энтерпрайз проектах и как, собственно, быть мне?
0. Что-то я сомневаюсь, что вас на собеседовании будут спрашивать про реактивный стэк.
1. Вовсе не обязательно использовать ужасные аннотации @XtoX и вот этот ваш хибернейт.
2. Вовсе не обязательно использовать R2DBC или SQL бд в принципе.
3. Даже если у вас блокирующий IO, вы можете выполнять запросы к нему асинхронно и/или с использованием очередей.
0. В желаемых навыках упоминается WebFlux и даже MyBatis, так что я решил перестраховаться.
1. Возможно, что вопрос совсем глупый, но как в таком случае подтягивать зависимые сущности? Прямым sql запросом? Типо как-нибуть так:
@Mapper
public interface CarMapper {
@Select("SELECT car.car_id, car.name, user.user_id" +
"FROM car INNER JOIN user ON car.user_id = user.user_id " +
"WHERE car.car_id = #{carId}")
Car findCarById(int carId);
}
Нет, не всегда. А как вы тогда предлагаете поступить? Допустим у `Car` может быть несколько `User` как и у `User` может быть несколько `Car`. Итого у нас 3 таблицы: user, car и user_car. Вы предлагаете искать User и Car асинхронно, а UserCar — синхронно?