Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 hibernate中的简单查询需要很多时间_Java_Hibernate_Delay - Fatal编程技术网

Java hibernate中的简单查询需要很多时间

Java hibernate中的简单查询需要很多时间,java,hibernate,delay,Java,Hibernate,Delay,我有以下java语句,称为500次,大约需要5分钟才能完成: List<Items> itemList = session.createCriteria(Items.class) .add(Restrictions.eq("id", itemID)) .setCacheable(true).setCacheRegion("query.DBMSItems") .list(); List itemList=session.createCriteria(Item

我有以下java语句,称为500次,大约需要5分钟才能完成:

List<Items> itemList =  session.createCriteria(Items.class)
    .add(Restrictions.eq("id", itemID))
    .setCacheable(true).setCacheRegion("query.DBMSItems")
    .list();
List itemList=session.createCriteria(Items.class)
.add(Restrictions.eq(“id”,itemID))
.setCacheable(true).setCacheRegion(“query.DBMSItems”)
.list();
我设置了以下配置:

org.hibernate.cache.ehcache.EhCacheRegionFactory
符合事实的
符合事实的
在缓存上:


因此,看起来缓存不工作


如果您能解释为什么会发生这种情况,我们将不胜感激。

在二级缓存中,您将查询缓存为键,结果缓存为值。如果将使用不同的参数执行查询,则每个查询将首先针对数据库执行,并花费所需的时间,然后返回值并将正确的键值对存储在缓存中,并且在多次调用具有相同参数的同一查询时,将转到二级缓存


对于您的情况,更好的解决方案是先缓存数据,然后对缓存中的数据执行查询。

500个项目的5分钟非常慢。。。在采取诸如缓存之类的变通办法之前,最好先找到根本原因。尝试分析您的应用程序,我推荐您的工具包。

似乎是一个数据库问题,因此缓存似乎是解决此问题的正确方法,但这也不是正确的方法。我同意,很可能是数据库问题,但数据库也可以优化:)我遇到过类似的情况,甚至数据库索引也无法解决此问题。对于大量数据和多个请求,最好将数据移动到缓存中,而不是(认为您正在)调整数据库。如果我理解正确,如果不查询一个参数,而是查询多个参数,即。add(Restrictions.eq(“id”,itemID))。add(Restrictions.eq(“name”,itemID))。add(Restrictions.eq(“name”,itemID))。add(Restrictions.eq(“value”),itemID),则第二个缓存将启动?@PepitoGomiz第二个查询缓存将针对数据库的每个查询启动。这个过程在帖子中有直接描述,看起来这并不能解决你的问题。您还可以查询所有需要的数据,将其存储在内存中的数据库中,然后查询该数据库,而不是真正的数据库引擎。奇怪的是,如果我删除对该方法的调用,进程将大大加快。没有中间调用,调用是直接的,这就是我使用缓存的原因,因为我找不到任何其他解释。@PepitoGomiz我建议编辑您的问题,并展示如何以高速运行,以及您添加的内容,使其变慢。