当前位置: 首页 > 知识库问答 >
问题:

Hibernate警告-正在内存中应用!-在引擎盖下?什么样的记忆?

仲孙信瑞
2023-03-14

我想询问有关此常见警告的信息-HH000104:使用集合获取指定的firstResult/maxResults;正在内存中应用!

我发现了很多与这个问题相关的问题。但是我不确定这个问题本身。所以我有一些问题。

第一个是关于一些Hibernate内存方案?Hibernate使用什么样的内存?一些结果集保存在什么样的内存中?第一个和第二个lvl缓存是什么样的内存?最后警告有什么问题——“在内存中应用”?那是什么样的内存?它比hibernate使用的“常规内存”慢,这导致了问题?我们是在谈论JVM内存吗?(可能会通过我之前的问题来回答)

流露出我的困惑的问题。非常感谢。

共有1个答案

夹谷俊远
2023-03-14

如果加入获取集合并在该查询上使用setFirstResult,Hibernate将使用效率低下的分页策略。如果避免联接获取集合,hibernate将生成一个查询,该查询只获取它所需的元素。

另一种选择是使用Blaze Persistence之类的库,它在JPA之上工作,实现高效分页:https://persistence.blazebit.com/documentation/core/manual/en_US/index.html#pagination

 类似资料:
  • 我目前正在用C#编写一个纯粹出于学术目的的JVM(也许将来会构建一个混合的.NET和Java/Scala应用程序)。 我编写了一个简单的JAVA类: 并将其编译为。当我使用我的反编译程序(我已经将其作为JVM的一部分编写)反编译它时,我看到这个方法的如下说明: 在常量池中查找索引处的常量时,我看到一个InvokeDynamic-Constant条目,其中包含以下数据: 我想这是有道理的(我更多的是

  • 我一直在尝试React钩子,它们似乎可以简化存储状态之类的事情。然而,他们似乎用魔法做了很多事情,我找不到一篇关于他们如何实际工作的好文章。 第一件看起来很神奇的事情是,调用像useState()这样的函数是如何在每次调用setXXX方法时导致函数组件的重新渲染的? 当功能组件甚至不具备在挂载/卸载上运行代码的能力时,像use效应()这样的东西是如何伪造组件的? useContext()实际上是如

  • 除了阅读github中的代码之外,是否有关于signalr.redis包如何工作的白皮书类型的文档?具体地说,我想知道它为Redis添加了哪些键、更新/删除策略等。当查看Redis内部时,我只看到以下调用中指定的一个键(即“signalr.Redis.sample”): 这把钥匙好像是Redis的柜台。我假设正在创建其他键并迅速删除,以方便连接到Redis的每个应用服务器之间的消息。

  • 问题内容: 我一直在尝试React Hooks,它们似乎确实简化了诸如存储状态之类的事情。但是,他们似乎通过魔术来做很多事情,而我找不到关于它们实际工作方式的好文章。 看起来很神奇的第一件事是,每次调用setXXX方法时,调用诸如useState()之类的函数如何导致功能组件的重新渲染? 当功能组件甚至没有能力在Mount / Unmount上运行代码时,诸如useEffect()之类的东西如何伪

  • 我想在我的项目中使用Spring Data Elasticsearch,我看到了这一点: 我的方法是只使用Spring数据Elasticsearch来执行CRUD操作(类似ORM),使用高级REST客户端进行搜索和所有其他操作。因此,我想知道ElasticsearchRepository使用哪个客户端来执行其操作,以及代码是否在Elasticsearch的8.0版中不再有效 使用3.1.5版仍然是

  • 问题内容: 在阅读了戴夫·切尼(Dave Cheney)关于Go的地图的博客文章之后,对我来说,还有几件事尚不清楚。 TLDR: 为什么它们无序? 实际值存储在哪里? 深入研究运行时程序包后,我发现基本的映射结构如下: -是存储区数组,其中索引是键的哈希值的低位,其中存储区为: ..好吧,这只是每个项目是键的哈希值的第一个字节的数组。键值对存储为(每个存储桶八对)。但是到底在哪里?考虑到映射可能包