我有一个基于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'
}