У меня есть операция CRUD, которая сильно зависит от соединения с базой данных, поэтому я хочу повысить общую производительность за счет асинхронных вызовов операций с базой данных.
например, в моем классе обслуживания
class CityService {
@Autowired
private CountryDao countryDao;
private City create () {
City c = new City();
ListenableFuture<Country> country = countryDao.findById(id);
country.addCallback(r->city.setCountry(r), ()-> { throw new RuntimeException();});
...
//suppose I have multiple database operations followed some logic, so I dont want to execute them one after one
...
return city;
}
}
Я хочу знать, является ли это правильным способом использования встроенного ListenableFuture of Spring Data, как я могу убедиться, что у города есть страна до возврата (он может выполнить возврат до того, как обратный вызов даст результат, верно?)?Если нет, то как лучше?