В настоящее время у меня есть метод, который выполняет вставку в базу данных с помощью метода хранилища Jooq. Каждый раз, когда запись сохраняется, она добавляется в локальный кеш, который в основном представляет собой карту с идентификатором, поступающим спереди (который мне нужно сохранить для дальнейшего использования), и идентификатором, который создается при сохранении. Итак, в основном:
private Map<String, Integer> cache = new HashMap<>();
public insert(List<Customer> customers>{
//some code to convert Customer to jooq generated CustomerRecord,
//which implements UpdatableRecord from Jooq
record.store();
cache.put(record.getFrontId(), record.getId());
}
public int find(String frontId) { return cache.get(frontId); }
В настоящее время все работает, но управление всем этим требует больших усилий. Как использовать подобное кеширование с помощью Spring @Cacheable? Никогда не использовал, но попробовал добавить
@CacheEvict(value = "customer", key = "#frontId") к методу find, но, конечно, кеш пуст, когда он вызывается.




Это пример для вас ... (Параметр автоматически является ключом кеширования (вы можете указать его с помощью (key = "# search.keyword) в Cacheable):
@Cacheable(value = "customercache")
public Customer find(String customerkey) {
return //Load some customer;
}
Действительно импорт есть, не забудьте активировать кеширование в основном методе.
@SpringBootApplication
@EnableCaching
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
чем вы возвращаете только идентификатор там
Не переборщить с сохранением всей клиентской сущности? Мне нужен только его идентификатор