我正在使用带有Hibernate的MS SQL Server 2008。我的问题是Hibernate如何实现setMaxResults
采取以下简单方案。
如果我有一个返回100行的查询,并且如果我将1传递给setMaxResults
,这会影响SQL Server本身返回的结果(就像运行一条select top 1
语句一样),还是Hibernate首先获取所有结果(在这种情况下为所有100行)并挑选最高的自己?
我问的原因是,当行数开始增加时,它将出现巨大的性能问题。
谢谢。
Hibernate将为所有支持限制查询的方言生成一个限制类型查询。由于SQLServerDialect支持此功能(请参阅org.hibernate.dialect.SQLServerDialect.supportsLimit()
和.getLimitString()
),您将获得select top 1
-query。
如果您想绝对确定,可以打开调试日志记录,或启用showSql
-option和test。
本文向大家介绍hibernate 是如何工作的?相关面试题,主要包含被问及hibernate 是如何工作的?时的应答技巧和注意事项,需要的朋友参考一下 读取并解析配置文件。 读取并解析映射文件,创建 SessionFactory。 打开 Session。 创建事务。 进行持久化操作。 提交事务。 关闭 Session。 关闭 SessionFactory。
这是我不懂的代码: 什么?通过对随机选择的进行简单的模拟,我得到了迭代,是平均值。 这是有道理的。 获得两个决策的两个位,是有道理的。
问题内容: 我提到了许多文章,但仍然不清楚hibernate状态下的性能。 根据我到目前为止遇到的是,当我们使用批量保存/更新时,如下所示: 用于刷新会话强制Hibernate将Session的内存中状态与数据库同步。 题 1. 刷新会话后,为什么需要这样做?真的需要吗? 2. 会执行提交动作吗? 3. 如果逐出所有已加载的对象,则在执行提交和回滚操作时内部会发生什么? 问题答案: 可以将会话视为
我从网上和论坛上看到了关于BatchSize的相关主题,但我仍然不明白一些部分。所以让我们描述一下我理解的和不理解的。 批量取数:选择取数的优化策略。Hibernate通过指定主键或外键列表,在一次选择中检索一批实体实例或集合。 让我们有JPA 2.0,带有Hibernate实现。这些实体: } 因此,我懒得去了解产品中的制造商。因此,当我执行select fetching时,就完成了。所以我有很
问题内容: 因此,以某种方式(玩转),我发现自己使用了regex这样的正则表达式。 从逻辑上讲,对我来说,它应表示: (一个数字正好一次)正好两次,即一个数字正好两次。 但实际上,它似乎仅表示“一个数字仅一次”(因此忽略了)。 使用或相似,可以看到相似的结果。 为什么会这样?它是在regex / Java文档中的某个地方明确声明的,还是只是Java开发人员即时做出的决定,还是一个错误? 还是实际上
问题内容: 工作如何?如果用更冗长的代码编写,它将是什么样? 问题答案: 是序列上的迭代器。产生一个包含n数量的列表,即一个长度的列表n,其中每个元素都是x。将序列解压缩为函数调用的参数。因此,你要将3次相同的迭代器传递给zip(),并且每次都会从迭代器中提取一个项目。