Database 是否在ehcache查询缓存未命中后禁用数据库往返?
我使用hibernate+ehcache并正确配置缓存属性。在应用程序启动时,我们初始化缓存,并通过ORM向数据库发出所有可能的查询。 如果输入了“有效的参数组合”,则此操作非常有效,否则会导致缓存未命中,从而导致到数据库的往返。数据完全是静态的 70%的情况都是未命中的,因此,如果缓存未命中可以按查询/实体级别进行不同的处理,我们可以获得很多好处 如果在预热后发生缓存未命中,是否有方法阻止hibernate+ehcache进入数据库?hibernate中可能有API钩子吗 在理想情况下,缓存预热后根本不执行DB访问 短暂性脑缺血发作Database 是否在ehcache查询缓存未命中后禁用数据库往返?,database,hibernate,ehcache,roundtrip,Database,Hibernate,Ehcache,Roundtrip,我使用hibernate+ehcache并正确配置缓存属性。在应用程序启动时,我们初始化缓存,并通过ORM向数据库发出所有可能的查询。 如果输入了“有效的参数组合”,则此操作非常有效,否则会导致缓存未命中,从而导致到数据库的往返。数据完全是静态的 70%的情况都是未命中的,因此,如果缓存未命中可以按查询/实体级别进行不同的处理,我们可以获得很多好处 如果在预热后发生缓存未命中,是否有方法阻止hibernate+ehcache进入数据库?hibernate中可能有API钩子吗 在理想情况下,缓存预
Frank考虑到您的配置,您有几个选择:
- 在Ehcache级别终止
- 在休眠级别终止
- 在JDBC级别终止
null
,Hibernate收回控件并从数据库中获取条目。您可以返回一些预定义的值(您知道该值无效,意味着不存在),但这有点代码味道
在Hibernate级别,您可以定义一个响应LoadEvent
。但不确定这是否可以应用于查询
与Hibernate类似,您也可以使用。这可能并不理想,因为您仍然会有Hibernate开销,但这仍然比等待数据库往返(我想每个请求大约50毫秒?)要好得多。是的,得出了相同的结论,我同意Hibernate可能应该用于实现所需的行为。我浏览了HibernateJava文档,根据我的理解,我必须处理:*SingletoneCacheProvider。。。作为缓存orm管道*QueryKey*StandardQueryCache*StandardQueryCacheFactory*Hibernate拦截器的入口点(我还不知道在这方面我能从中获得什么,请看)