[java] Ehcache란 무엇인가요?

Ehcache는 다양한 캐싱 기능을 제공합니다. 가장 기본적인 기능은 메모리 캐싱입니다. 데이터를 메모리에 저장하여 디스크나 네트워크에서 접근하는 것보다 훨씬 빠른 속도로 데이터에 접근할 수 있습니다. 또한 Ehcache는 분산 캐싱 기능도 제공하여 여러 서버 사이에서 캐시를 공유할 수 있습니다.

Ehcache를 사용하기 위해서는 우선 Ehcache 라이브러리를 프로젝트에 추가해야 합니다. 그런 다음, 캐시 객체를 생성하고 데이터를 저장하고 검색하는 작업을 할 수 있습니다. 이러한 작업은 CacheManager 클래스와 Cache 인터페이스를 사용하여 수행할 수 있습니다.

아래는 Ehcache를 사용하여 캐시를 구현하는 예제 코드입니다.

import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.CacheConfiguration;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;

public class EhcacheExample {
    public static void main(String[] args) {
        // CacheManager를 생성합니다.
        CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder().build();
        cacheManager.init();

        // 캐시 구성을 설정합니다.
        CacheConfiguration<String, Integer> cacheConfiguration = CacheConfigurationBuilder
                .newCacheConfigurationBuilder(String.class, Integer.class)
                .build();

        // 캐시를 생성합니다.
        Cache<String, Integer> cache = cacheManager.createCache("myCache", cacheConfiguration);

        // 데이터를 캐시에 저장합니다.
        cache.put("key1", 10);
        cache.put("key2", 20);
        cache.put("key3", 30);

        // 데이터를 캐시에서 검색합니다.
        Integer value1 = cache.get("key1");
        Integer value2 = cache.get("key2");
        Integer value3 = cache.get("key3");

        System.out.println(value1);  // 10
        System.out.println(value2);  // 20
        System.out.println(value3);  // 30

        // CacheManager를 종료합니다.
        cacheManager.close();
    }
}

위의 예제에서는 CacheManagerBuilderCacheConfigurationBuilder를 사용하여 캐시 매니저와 캐시 구성을 설정하였습니다. 그 후, createCache() 메소드를 사용하여 실제 캐시를 생성하고 put() 메소드를 사용하여 데이터를 저장하고, get() 메소드를 사용하여 데이터를 검색하였습니다.

Ehcache는 Java에서 강력한 캐싱 기능을 제공하여 성능을 향상시킬 수 있습니다. 추가로 Ehcache는 클러스터링, 트랜잭션, 지역성 등 다양한 기능을 제공하므로, 프로젝트에 따라 필요한 기능을 선택하여 활용할 수 있습니다.

더 자세한 내용은 Ehcache 공식 문서를 참고하시기 바랍니다. Ehcache 공식 문서

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;
import org.ehcache.config.units.EntryUnit;
import org.ehcache.config.units.MemoryUnit;

import java.time.Duration;

public class EhcacheExample {
    public static void main(String[] args) {
        // CacheManager 생성
        CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
                .with(CacheManagerBuilder.persistence("C:\\temp\\ehcache"))
                .withCache("myCache",
                        CacheConfigurationBuilder.newCacheConfigurationBuilder(
                                String.class, Integer.class,
                                ResourcePoolsBuilder.heap(10).offheap(1, MemoryUnit.MB))
                                .withExpiry(Duration.ofSeconds(30))
                                .build())
                .build();

        // CacheManager 초기화
        cacheManager.init();

        // Cache 생성
        Cache<String, Integer> myCache = cacheManager.getCache("myCache", String.class, Integer.class);

        // Cache에 데이터 추가
        myCache.put("key1", 1);
        myCache.put("key2", 2);
        myCache.put("key3", 3);

        // Cache에서 데이터 조회
        Integer value1 = myCache.get("key1");
        Integer value2 = myCache.get("key2");
        Integer value3 = myCache.get("key3");

        System.out.println(value1); // 1
        System.out.println(value2); // 2
        System.out.println(value3); // 3

        // CacheManager 종료
        cacheManager.close();
    }
}

출처: 비혼자의 개발 일지