/home/haqen

JPA ile JBoss Cache kullanımı

by admin on Jan.17, 2009, under yazılım geliştirme

Bu aralar jboss cluster kurmaya çalışıyorum, bunun için uğraşırken şu an için kullandığım cache yapısının da değişmesi gerektiğini farkettim. Normalde JPA ayarlarında Ehcache kullanıyor idim, ancak cluster yapısına geçtiğimde varolan Ehcache konfigürasyonum distributed olmadığı için sunucuların veritabanı cache’leri birbirinden farklı olacak ve örneğin A sunucusunda update işlemi yapıldığında B sunucusunda bu veriler cache de ise invalidate olmayacağıdan bu sunucuda ilgili istek olduğunda problem ortaya çıkacak.

Bu yüzden veritabanı cache yapısının da cluster yapısına uygun olması gerekiyor.  Bu yüzden JBoss’un cache yapısını test edeceğim. Hem Ehcache gibi dışarıdan bir kütüphaneye de ihtiyacımız kalmamış oluyor. Tabi JBoss bağımlılığımız artıyor o da ayrı bir konu.

JBoss Cache’i JPA ile kullanmak için, persistence.xml’de

<property name = “cache.provider_class” value=”org.jboss.ejb3.entity.TreeCacheProviderHook”/>
<property name = “treecache.mbean.object_name” value=”jboss.cache:service=EJB3EntityTreeCache”/>

satırlarını eklememiz gerekiyor, bundan sonra entity sınıfımızın tepesine @Cache annotation’ını eklememiz gerekiyor.

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name = “my_entity”, catalog = “db”)
@Cache(usage=CacheConcurrencyStrategy.TRANSACTIONAL)
public class MyEntity implements java.io.Serializable {

….
}

son olarak da Query nesnelerimize

query.setHint(”org.hibernate.cacheable”, true);

özelliği vermemiz gerekiyor. Şimdilik sadece select testi yaptım, bir kez select attıktan sonra bir daha aynı selecti yapmadı. Ama güncellemelerden sonra nasıl davranıyor henüz test etmedim. Sıcağı sıcağına buraya yazdım :)

No comments for this entry yet...

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!