Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java缓存策略_Java_Hibernate_Caching_Grails_Hazelcast - Fatal编程技术网

Java缓存策略

Java缓存策略,java,hibernate,caching,grails,hazelcast,Java,Hibernate,Caching,Grails,Hazelcast,我有一个基于Grails框架的电子商务软件。现在,我们正在使用Hibernate二级缓存和Hazelcast(在Terracotta DSO之前)来分发服务器。这使我可以直接检索对象(这样我就可以调用Objet.get(id)),我将从Hibernate获取对象,而不是昂贵的数据库调用 我想知道“大”网站是如何做到这一点的?特别是对于附加了过滤器(如价格、排序、品牌)的类别页面,我的方法不再起作用了。什么是避免一直访问数据库的最佳策略?是将所有内容都放在内存中,并用Java而不是SQL查询进行排

我有一个基于Grails框架的电子商务软件。现在,我们正在使用Hibernate二级缓存和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
中使用
ehcache
作为二级缓存提供程序?可以阅读更多内容。我在Terracotta DSO中使用ehcache,但每次查询都会触及数据库,因此我的结论是它仅在您直接接收对象时有效,而不是用于查询(除了查询缓存,但这不是正确的做法,因为我们有很多事务,而且逐出也很昂贵)。您可以向我们展示您尝试过的ehcache配置文件
ehcache.xml
和hibernate属性设置吗?这对您有很大帮助。谢谢,我已经用您要求的代码片段更新了我的帖子。我将查看教程,但据我所知,它也是关于查询缓存的?
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}