GirişBu proje idame ettiriliyor mu bilmiyorum. En son Hibernate 5.X sürümünde kalmış. Hibernate region factory olarak şu sınıflar kullanılabilir
1. HazelcastCacheRegionFactory
Şu satırı dahil ederiz
import com.hazelcast.hibernate.HazelcastCacheRegionFactory;
Second Level Cache verisini IMap üzerinde saklar. Bunu sağlayan sınıf IMapRegionCache
Kalıtım şöyle
org.hibernate.cache.spi.Region
com.hazelcast.hibernate.RegionCache
com.hazelcast.hibernate.distributed.IMapRegionCache
application.properties dosyasında şöyle yaparız
# HIBERNATE 2 LEVEL CACHE
# enable selective caching mode - only entities with @Cacheable annotation will use L2 cache
spring.jpa.properties.javax.persistence.sharedCache.mode=ENABLE_SELECTIVE
spring.jpa.properties.hibernate.cache.use_second_level_cache: true
spring.jpa.properties.hibernate.cache.region.factory_class: com.hazelcast.hibernate.HazelcastCacheRegionFactory
1 Key olarak org.hibernate.cache.internal.BasicCacheKeyImplementation kullanılıyor
2. Value olarak ta sanırım eğer kendi tarafımda value nesnesi yoksa "com.hazelcast.nio.serialization.HazelcastSerializationException : No DataSerializerFactory registered for namespace: ..." hatası alırım
2. HazelcastLocalCacheRegionFactory
Second Level Cache verisini yerel bilgisayarda saklar. Bir şekilde arkada
ITopic kullanıyor
Entity
Örnek
Şöyle yaparız. O zaman country isimli bir IMap oluşturur. Veri HeapData tipindendir
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="country")
public class Country {
...
}
Eğer region ismi vermezsek sınıfın tam yolunu kullanır. Yani IMap ismi IMap com.colak.hzspringtutorial.hibernatecache.Country gibi bir şey olur
3. JCache
Açıklaması şöyle
Hazelcast provides three CachingProvider implementations:
- A member-side implementation: the CacheManagers created by this provider are backed by member-side HazelcastInstances.
- A client-side implementation: the CacheManagers created by this provider are backed by client-side HazelcastInstances.
- A delegating caching provider that can be configured to delegate to the member- or client-side implementation.
Kalıtım şöyle
javax.cache.spi.CachingProvider
// Client veya Member'a delegating Caching provider
com.hazelcast.cache.HazelcastCachingProvider
// Client'a delegating Caching provider
com.hazelcast.client.cache.HazelcastClientCachingProvider
// Member'a delegating Caching provider
com.hazelcast.client.cache.HazelcastMemberCachingProvider
JCache CachingProvider gerçekleştirim ise şöyle
javax.cache.spi.CachingProvider
com.hazelcast.cache.impl.AbstractHazelcastCachingProvider
// com.hazelcast.client.cache.impl.HazelcastClientCacheManager yaratır
com.hazelcast.client.cache.impl.HazelcastClientCachingProvider
// com.hazelcast.client.cache.impl.HazelcastServerCacheManager yaratır
com.hazelcast.cache.impl.HazelcastServerCachingProvider
Bu sınıflar JCache CacheManager nesneleri dönerler. Kalıtım şöyle
javax.cache.CacheManager
com.hazelcast.cache.HazelcastCacheManager
com.hazelcast.cache.impl.AbstractHazelcastCacheManager
com.hazelcast.client.cache.impl.HazelcastClientCacheManager
com.hazelcast.client.cache.impl.HazelcastServerCacheManager
Tüm CacheManager nesneleri altta aslında ICache arayüzünü kullanıyorlar
1. HazelcastClientCachingProvider - JCache
Örnek
Şöyle
yaparız. Burada
hazelcast.jcache.provider.type alanı
member veya
client değerlerini alabilir.
member değeri atayarak yeni bir embedded member yaratması veya mevcut olanı kullanması sağlanıyor.
hazelcast.jcache.provider.type=member
hibernate.cache.region.factory_class=jcache
hibernate.cache.use_second_level_cache=true
2. HazelcastClientCachingProvider - JCache
Hazelcast cluster'a bağlanır
Örnek
jpa:
default:
properties:
hibernate:
cache:
use_query_cache: false
use_second_level_cache: true
region:
factory_class: com.hazelcast.client.cache.HazelcastClientCachingProvider
3. HazelcastServerCachingProvider - JCache
Embedded cache başlatır
Örnek
hibernate:
cache:
region:
factory_class: jcache
javax:
cache:
provider: com.hazelcast.cache.impl.HazelcastServerCachingProvider
uri: <HazelcastConfig.xml>