Korzyścią jest wydajność. Kwerendowanie bazy danych wymaga zasobów i czasu. Jeśli twoje tabele są na tyle małe, że możesz przechowywać przedmioty w pamięci, proste odniesienie do lokalnej pamięci jest szybsze o rząd wielkości.
Jeśli chodzi o zachowanie synchronizacji, jest to trudniejsza odpowiedź i zależy od przypadku użycia. W większości przypadków, o ile nie skonfigurujesz dobrej niestandardowej architektury, nie będzie możliwości zagwarantowania synchronizacji bazy danych i kolekcji w pamięci po ich pobraniu do pamięci.
Jeśli chciał podjąć tego podejścia i mieć kolekcję i bazę być zsynchronizowane (niby jak o swój tort i jedzenie to też), można zrobić coś jak następuje:
- Skonfiguruj wyzwalacze bazy danych w tabeli dla dowolnego tworzenia, wstawiania, aktualizacji lub usuwania.
- Wyzwalacze uruchamiają skrypt, który w jakiś sposób powiadamia aplikację (monitorowanie wątku, usługi, cokolwiek).
- Po otrzymaniu zgłoszenia zaktualizuj kolekcję, czytając bazę danych.
Oczywiście, niezależnie od tego, czy poprawi to wydajność, zależy od tego, jak często baza danych jest modyfikowana przez inne programy.
Możesz również w swoim programie po prostu utrzymywać blokadę bazy danych, aby nikt inny nie mógł go zmodyfikować na czas przetwarzania (umożliwiając zachowanie pozycji w pamięci i gwarantujących niezmienność bazy danych) , ale jest to bardzo zła praktyka, ponieważ w zasadzie będziesz łamał każdą inną aplikację przy użyciu tego samego stołu (na cokolwiek innego niż czytanie).
Czy możesz wyjaśnić, co masz na myśli? Czy mówisz o zestawach wynikowych i kursorach konwertowanych na kolekcje, które przechowują POJO java? –
Przepraszamy, ale nie jest to temat FAQ.Zależy to od problemu, tabeli, architektury aplikacji, używanych bibliotek i wielu innych czynników. – Dariusz
Dziękuję wyborcom. –