8 Kasım 2022 Salı

JCache - JSR 107

Giriş
İlk olarak 2011 yılında Java EE 7 ile ortaya çıktı. Açıklaması şöyle
The JVM ecosystem has an official Cache API, known as JCache, or JSR 107. It’s a specification with an API that describes four annotations, i.e., @CacheResult, @CachePut, @CacheRemove, and @CacheRemoveAll. Vendors are to implement the specification.

The Spring framework is pretty widespread in the JVM ecosystem. It also provides a caching API. Historically, it predates JCache. While different, the API is very similar to JCache’s. Spring offers out-of-the-box integration code for a couple of caches, while a couple of others do provide Spring integration.
Java Cache Providers
Liste şöyle. Bunların içinden sadece Guava ve Geode JCache desteği sunmuyor.
  1. Java Caching System
  2. Guava
  3. Caffeine
  4. Ehcache
  5. Infinispan
  6. Coherence Community Edition
  7. Ignite
  8. Geode
  9. Hazelcast
Spring vs JCache
Anotasyonlar şöyle

JCache API interfaces
Önemli sınıflar şöyle
1. javax.cache.CacheManager
2. javax.cache.Cache 
3. javax.cache.configuration.Configuration

JCache Annotations 
@CacheResult
@CachePut
@CacheRemove

CacheManager Arayüzü
Şu satırı dahil ederiz
import javax.cache.CacheManager;
Açıklaması şöyle
It enables us to establish, configure and close Caches.
Bu arayüzü gerçekleştiren sınıflardan birisi. İlgili notlarım burada
import com.hazelcast.cache.HazelcastCacheManager;
@CacheResult
Örnek
Şöyle yaparız
public class ServiceImpl {

  @Override
  @CacheResult(cacheName = ..., cacheKeyGenerator = DefaultObjectsCacheKeyGenerator.class)
  public Foo getObject(@CacheKey String userId, @CacheKey String customerId) {
    ...
  }
}



Hiç yorum yok:

Yorum Gönder

Bean Validation @GroupSequence Anotasyonu

Örnek Elimizde şöyle bir kod olsun public class SampleRequest {   @NotNull   LocalDate startDate;   @NotNull   LocalDate endDate;   @AssertT...