Ehcache für Java: Das ultimative Caching-Handbuch
Ehcache ist eine leistungsstarke, weit verbreitete Open-Source-Caching-Bibliothek für Java. Sie bietet Entwicklern eine einfache, aber hochperformante API zur temporären Datenspeicherung. Dadurch können Anwendungen erheblich beschleunigt werden, da die Zugriffszeit auf langsame Datenquellen wie Datenbanken, externe APIs oder Dateisysteme drastisch reduziert wird. Ehcache gilt als De-facto-Standard für Caching im Java-Ökosystem und wird in großen Projekten wie Hibernate (als Second-Level-Cache-Provider), Spring Framework und vielen anderen eingesetzt.
Warum braucht man die Ehcache-Bibliothek? Das Hauptziel ist die Steigerung der Anwendungsleistung. Wenn Daten aus einer Datenbank oder einem externen Dienst abgerufen werden, benötigt jede Anfrage Zeit für Netzwerkaufrufe, Festplatten-I/O oder komplexe Berechnungen. Ehcache speichert das Ergebnis der ersten Anfrage im Arbeitsspeicher (oder auf der Festplatte) und liefert es bei erneuten Zugriffen auf dieselben Daten sofort aus dem Cache zurück. Dies entlastet Datenbanken, reduziert Antwortzeiten und verbessert die Benutzererfahrung. Darüber hinaus bietet Ehcache Mechanismen zur Verwaltung des Cache-Lebenszyklus: automatische Entfernung veralteter Einträge (TTL, TTI), Verdrängungsstrategien bei Speicherüberlauf (LRU, LFU, FIFO) und Unterstützung für verteiltes Caching in Cluster-Umgebungen.
Zu den wichtigsten Funktionen von Ehcache gehören: Caching im Arbeitsspeicher und auf der Festplatte, Transaktionsunterstützung, Integration in Jakarta EE, JMX-Überwachung, Konfiguration über XML oder programmatisch sowie Unterstützung für verteiltes Caching über Terracotta. Die Bibliothek wird ständig weiterentwickelt: Ab Version 3.x bietet Ehcache eine moderne, typsichere API mit Java-Generics-Unterstützung, was den Code sauberer und zuverlässiger macht.
Installation
Ehcache wird über Maven Central vertrieben. Fügen Sie die folgende Abhängigkeit zu Ihrer pom.xml (für Maven) oder build.gradle (für Gradle) hinzu.
Maven
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.10.8</version> <!-- Aktuelle Version auf Maven Central prüfen -->
</dependency>
Gradle
implementation 'org.ehcache:ehcache:3.10.8'
Wenn Sie eine ältere Version von Ehcache 2.x verwenden, sieht die Abhängigkeit wie folgt aus:
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.9.2</version>
</dependency>
In diesem Artikel verwenden wir Ehcache 3.x, da es die moderne und empfohlene Version ist.
Schnellstart: Minimales funktionsfähiges Beispiel
Wir erstellen einen einfachen Cache, der Schlüssel-Wert-Paare (String, String) speichert.
import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
public class EhcacheQuickStart {
public static void main(String[] args) {
// 1. CacheManager erstellen
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("myCache",
CacheConfigurationBuilder.newCacheConfigurationBuilder(
String.class, // Schlüsseltyp
String.class, // Werttyp
ResourcePoolsBuilder.heap(10)) // 10 Einträge im Arbeitsspeicher
)
.build();
// 2. CacheManager initialisieren
cacheManager.init();
// 3. Cache anhand des Namens abrufen
Cache&l