【发布时间】:2017-10-11 16:18:32
【问题描述】:
从 Hibernate 5.2 开始,如果我们想要获取大量数据,我们可以使用 stream() 方法而不是 scroll()。
但是,当使用 scroll() 和 ScrollableResults 时,我们可以挂钩到检索过程并通过在处理对象后从持久上下文中逐出对象和/或每隔一段时间清除整个会话来释放内存然后。
我的问题:
- 现在,如果我们使用
stream()方法,幕后会发生什么? - 是否可以从持久上下文中逐出对象?
- 会话是否定期清除?
- 如何实现最佳内存消耗?
- 可以使用例如无状态会话?
- 另外,如果我们在 JPA 属性中将
hibernate.jdbc.fetch_size设置为某个数字(例如 1000),那么这如何与可滚动结果很好地结合?
【问题讨论】:
-
与此主题相关的有趣文章:vladmihalcea.com/2016/11/23/…
-
相关 Hibernate JIRA 问题:hibernate.atlassian.net/browse/HHH-11260
标签: java hibernate jpa stream scrollableresults