Mam metodę która zapisuje do bazy danych ExpensiveObject:
public ExpensiveObject save(Long id, Dto dto) { .. }
Mam też metodą która potrafi wyciągnąć to z bazy danych podając id:
public ExpensiveObject getById(Long id) {
repository.findById(id).orElseThrow();
}
Tak naprawdę to chciałbym żeby ta pierwsza metoda również zapisywała to do jakiegoś cache postaci Map<Long, ExpensiveObject> gdzie kluczem jest id.
Natomiast ciało drugiej metody powinno się odpalać tylko jeśli w cache nie ma klucza o takim ID-ku.
Jak to tutaj obkleić adnotacjami z Spring Cache żeby to zadziałało tak jak napisałem?
Btw, w prawdziwym scenariuszu te metody robią mocno coś innego ale chciałem uprościć na maxa na potrzeby przykładu.
EDIT: Prawdopodobnie mogę dodać @Cacheable na getById(Long id)
i mogłoby to działać, ale chciałbym żeby to się cachowało już przy wołaniu save
, a nie dopiero przy wołaniu getById
.