Nyetel caching
Ayo bali menyang setelan caching ing file hibernate.cfg.xml:
<property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletEhCacheProvider"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
Pay manungsa waé menyang baris pisanan - ngandhut jeneng kelas engine caching. Hibernate ora bener ngleksanakake caching internal, nanging menehi sakumpulan antarmuka sing sampeyan bisa ngleksanakake mesin caching dhewe.
Implementasi populer kalebu:
- EHCache
- OSCache
- SwarmCache
- JBoss TreeCache
EHCache
Bisa di-cache ing memori utawa ing disk, uga ing cache kluster, lan uga ndhukung cache opsional saka asil pitakon Hibernate.
OSCache
Ndhukung memori lan disk caching ing JVM padha karo pesawat sugih saka kabijakan kadaluwarsa lan dhukungan cache query.
SwarmCache
Cluster cache adhedhasar JGroups. Iki nggunakake invalidasi clustered nanging ora ndhukung cache query Hibernate.
JBoss Cache
Cache clustered replikasi transaksional kanthi lengkap, uga adhedhasar perpustakaan multicast JGroups. Ndhukung replikasi utawa invalidation, komunikasi sinkron utawa asinkron, lan kunci optimistis lan pesimis. Cache query hibernate didhukung.
Mesin iki ora ndhukung kabeh strategi akses paralel. Kahanan sing nyata diterangake ing tabel ing ngisor iki:
Strategi / Panyedhiya | Namung diwaca | maca-nulis non-ketat | maca-nulis | transaksional |
---|---|---|---|---|
EHCache | X | X | X | |
OSCache | X | X | X | |
SwarmCache | X | X | ||
JBoss Cache | X | X |
Conto konfigurasi EHCache
Mesin EHCache duwe file konfigurasi dhewe sing diarani ehcache.xml. Isi kira-kira file kasebut:
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory = "1000"
eternal = "false"
timeToIdleSeconds = "120"
timeToLiveSeconds = "120"
overflowToDisk = "true"
/>
<cache name = "Employee"
maxElementsInMemory = "500"
eternal = "true"
timeToIdleSeconds = "0"
timeToLiveSeconds = "0"
overflowToDisk = "false"
/>
Ing kene sampeyan bisa ngatur setelan caching ing umum lan kanggo saben entitas kanthi kapisah. Waca liyane ing dokumentasi resmi .
Analisis statistik cache
Sampeyan bisa uga kudu mriksa carane uga mekanisme caching diatur. Hibernate nyedhiyakake obyek Statistik khusus khusus kanggo iki.
Tuladha:
Statistics statistics = session.getSessionFactory().getStatistics();
CacheRegionStatistics cacheStatistics = statistics.getDomainRegionStatistics(“com.codegym.employee”);
long hitCount = cacheStatistics.getHitCount();
long missCount = cacheStatistics.getMissCount();
double hitRatio = (double) hitCount / (hitCount + missCount);
Kita ora bakal njlentrehake kanthi rinci babagan iki, amarga bakal pirang-pirang taun sadurunge sampeyan kehabisan solusi caching standar lan kudu nambah kanthi manual. Miturut cara, komentar iki bisa uga dijupuk saka kasus sing padha:
// Dear programmer:
// When you're done "optimizing" this routine
// and realize how big of a mistake it was to do this,
// please increment the counter at the bottom as a warning
// for the next guy:
// number_of_hours_spent_here = 42
GO TO FULL VERSION