【问题标题】:Need to flush/clear when updating a big list of objects with Hibernate + Spring Data?使用 Hibernate + Spring Data 更新大量对象时需要刷新/清除?
【发布时间】:2019-01-14 13:11:56
【问题描述】:

我将休眠与 Spring Data 一起使用,并且我有一个“产品”对象列表。 我从“服务”布局中恢复了这个列表。 我的清单很大,不是很大,但很大。 我使用springdata,所以自动实现的方法称为“saveAll”。 所以,我想使用 dao.saveAll(products) 更新/保留这个大列表。 问题是 : 当我处理大量产品时,我是否必须清除和刷新(在每个 n 个对象的步骤中)? 还是在 Springdata 中实现? 如果是,该怎么做? 这样做的最佳做法是什么?

【问题讨论】:

  • 是的,你需要 clearflush 并且没有任何东西在 Spring Data JPA 中自动实现。

标签: java hibernate spring-data-jpa flush


【解决方案1】:

这将取决于应用程序逻辑。如果仅更新全部或全部更新才有意义,则需要在单个事务中更新列表。如果不希望这样做,例如列表分块处理的批处理场景,可以在每个块之后手动flush()

手动clear()flush() 在某些情况下可以用来提高性能,但首先你的程序必须是正确的。如果你想走这条路,你可以看看The best way to do batch processing with JPA and Hibernate教程。

【讨论】:

  • @kdowbecki 好的卡罗尔。我需要绝对更新我通过服务布局恢复的整个列表(产品产品 = service.recoverAll();),无一例外。那么,有一个很大的列表,我是否必须相信 springdata+hibernate 实现 'saveAll()' 方法的质量?或者,我是否必须建立 n 个迷你列表并更新每个迷你列表? (1/ 列出 miniList1(AND) 2/ 对象 1 到 50 --> list1.add(product) (AND THEN) 3/ dao.saveAll(miniList1);) –
猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 2019-11-29
  • 2011-12-07
  • 2020-01-14
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多