gpt4 book ai didi

java - Hibernate:避免一次将所有记录读入内存

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:43 24 4
gpt4 key购买 nike

我在数据库中有大量行,我需要从中创建一个 XML 文档。我正在使用 hibernate 3。Criteria 和 Query 接口(interface)中的基本 list() 方法看起来很危险:我怀疑它几乎必须将所有记录读入内存,即使我只迭代它们也是如此。还是有一些延迟加载魔术?如果没有,我似乎还有两个选择:使用 Query 中的 scroll() 或 iterate() (滚动也存在于 Criteria 中)。如果我想要最少的 SQL 往返,iterate 看起来也不是那么好:“第一个 SQL 查询仅返回标识符”。所以我是对的,我必须为此使用 scroll() 吗?

最佳答案

尝试将 scroll() 与此结合使用:

http://docs.jboss.org/hibernate/core/3.3/api/org/hibernate/StatelessSession.html

一个面向命令的 API,用于对数据库执行批量操作。

无状态 session 不实现一级缓存,也不与任何二级缓存交互,也不实现事务性后写或自动脏检查,也不对关联实例进行级联操作。无状态 session 会忽略集合。通过无状态 session 执行的操作绕过 Hibernate 的事件模型和拦截器。由于缺少一级缓存,无状态 session 容易受到数据别名效应的影响。

对于某些类型的事务,无状态 session 的执行速度可能比有状态 session 稍快。

关于java - Hibernate:避免一次将所有记录读入内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/294077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com