Używam CacheBuilder i LoadingCache do implementowania pamięci podręcznej danych bazy danych w pamięci.Guava LoadingCache - obsługa kluczy, których nie ma w sklepie kopii zapasowej.
Załóżmy, że klient wysyła zapytanie do pamięci podręcznej o produkt, który nie istnieje w magazynie zaplecza. Chcę, aby klient wiedział, że nie znaleziono żadnych danych dla określonego klucza. Jakie jest najlepsze podejście do radzenia sobie z tym?
- Zapisuj wartość specjalną w pamięci podręcznej, która oznacza "brak danych".
- Nie przechowuj niczego w pamięci podręcznej i zgłaszaj wyjątków.
- Inne pomysły?
Cóż ... czy to oznacza wyjątkowy stan, czy jest to normalne zjawisko w twoim programie? Jeśli pierwszy, wyrzuć wyjątek, jeśli drugi, zapisz specjalną wartość. –
Nieco niechętnie użyłem opcji "Opcjonalnie" w tych ostatnich przypadków Louisa. – Ray
W moim przypadku "brak danych" ma znaczenie. Początkowo próbowałem przechowywać wartość null w pamięci podręcznej, która nie powiodła się z powodu "InvalidCacheLoadException". Dzięki za sugestię, Ray. Również znalazłem dobre informacje tutaj: http://stackoverflow.com/questions/8298285/handle-null-value-using-guava-mapmaker-cachebuilder – frankadelic