Zwischenspeichern von Informationen in einem DAO auf threadsichere Weise

Ich muss häufig DAOs für einige Referenzdaten implementieren, die sich nicht sehr oft ändern. Ich habe dies manchmal im Auflistungsfeld des DAO zwischengespeichert, sodass es nur einmal geladen und bei Bedarf explizit aktualisiert wird.

Dies bringt jedoch viele Probleme mit sich - was passiert, wenn ein anderer Thread versucht, auf die Daten zuzugreifen, während sie geladen oder aktualisiert werden.

Dies kann natürlich dadurch bewältigt werden, dass sowohl die Getters als auch die Setters der Daten synchronisiert werden. Für eine große Webanwendung ist dies jedoch ein erheblicher Aufwand.

Ich habe ein triviales fehlerhaftes Beispiel von dem beigefügt, was ich als Strohmann brauche. Bitte schlagen Sie alternative Möglichkeiten zur Implementierung vor.

<code>public class LocationDAOImpl implements LocationDAO {

private List<Location> locations = null;

public List<Location> getAllLocations() {
    if(locations == null) {
        loadAllLocations();
    }
    return locations;
}
</code>

Für weitere Informationen verwende ich Hibernate und Spring, aber diese Anforderung würde für viele Technologien gelten.

Einige weitere Gedanken:

Sollte dies überhaupt nicht im Code behandelt werden - stattdessen sollte ehcache oder ähnliches damit umgehen? Gibt es ein gemeinsames Muster dafür, das mir fehlt? Es gibt offensichtlich viele Möglichkeiten, wie dies erreicht werden kann, aber ich habe noch nie ein Muster gefunden, das einfach und wartbar ist.

Danke im Voraus!

Antworten auf die Frage(6)

Ihre Antwort auf die Frage