直接访问ehcache并仅在未命中缓存时使用hibernate

直接访问ehcache并仅在未命中缓存时使用hibernate,hibernate,orm,caching,jpa,ehcache,Hibernate,Orm,Caching,Jpa,Ehcache,环境:Seam 2.2.0、JPA、Hibernate 3.3.x、ehcache核心2.0.1 下面是一些关于在Hibernate中使用缓存的介绍。我们已经在使用二级缓存,但对响应时间不太满意 上面参考中提到的第三个选项(直接访问EHCache,仅在缓存未命中时使用Hibernate:20秒)谈到在持久层前面使用EHCache。我们已经在为所有查询使用Seam的EntityQuery框架,是否可以在查询或加载对象之前首先访问ehcache的位置启用上述选项。在这种情况下,实体的修改或删除是如何

环境:Seam 2.2.0、JPA、Hibernate 3.3.x、ehcache核心2.0.1

下面是一些关于在Hibernate中使用缓存的介绍。我们已经在使用二级缓存,但对响应时间不太满意


上面参考中提到的第三个选项(直接访问EHCache,仅在缓存未命中时使用Hibernate:20秒)谈到在持久层前面使用EHCache。我们已经在为所有查询使用Seam的EntityQuery框架,是否可以在查询或加载对象之前首先访问ehcache的位置启用上述选项。在这种情况下,实体的修改或删除是如何处理的?您是否必须手动从缓存中逐出这些条目。有人能解释一下吗?

首先,我发现引用文章的数据非常奇怪(19秒获得连接意味着连接池上存在争用)。因此,我对它持保留态度

我们已经在为所有查询使用Seam的EntityQuery框架,是否可以在查询或加载对象之前首先访问ehcache的位置启用上述选项

这就是Hibernate二级缓存的工作原理。如中所述,Hibernate二级缓存是读写式缓存,若缓存未命中,则从数据库中读取实体,然后将其交给缓存进行后续访问

现在,如果您的意思是实现第三个选项,这将意味着完全绕过Hibernate二级缓存并手动执行所有操作。当然,这是可能的,但你在这里是自己的。正如我所说的,我非常怀疑使用Hibernate会带来那么多的开销,所以我不会根据上面提到的文章做出决定。衡量事物

在这种情况下,实体的修改或删除是如何处理的?您是否必须手动从缓存中逐出这些条目

完全是手动的。祝您在事务、错误处理、并发性等方面好运