Java缓存策略

时间:2014-05-08 11:24:50

标签: java hibernate caching grails hazelcast

我有一个基于Grails Framework的电子商务软件。现在,我们正在使用Hibernate SecondLevel Cache和Hazelcast(Terracotta DSO之前)来分发我们的服务器。这允许我直接检索对象(所以我可以调用Objet.get(id),我将从Hibernate获取对象而不是昂贵的数据库调用。

我想知道"大"网站正在这样做?特别是对于带有附加过滤器的类别页面(例如价格,订购,品牌),我的方法不再适用。避免一直闯入数据库的最佳策略是什么?它是用Java而不是SQL查询在内存和顺序/排序/过滤中进行的吗?

感谢您的反馈。

更新:这是ehcache.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache name="Cache" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd">    
    <defaultCache maxEntriesLocalHeap="10000" timeToIdleSeconds="0"         
        timeToLiveSeconds="0">       
        <persistence strategy="distributed"/> 
        <elementValueComparator class="net.sf.ehcache.store.DefaultElementValueComparator"/>        
        <terracotta clustered="true">
            <nonstop enabled="true" />
        </terracotta>
    </defaultCache>  
    <terracottaConfig rejoin="true" url="tcURL:9510" />
    </ehcache>

和hibernate配置(取自Grails):

hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}

0 个答案:

没有答案