【发布时间】:2020-04-11 06:27:07
【问题描述】:
我正在使用 spring boot(2.2.1) 和 spring data jpa。
我的应用程序运行了一项计划服务,我必须在其中读取多家公司的数百万客户数据(带有分页)。
在做了一些操作之后,我必须为这些用户更新一个状态列。
要更新状态,我正在使用本机查询(使用 @Query 注释和 nativeQuery=true)。
public void scheduledTask() {
List<Integer> companies = getCompanies();
for each company:
1. get x customers
2. do some operation
3. repeat step 1 -> 2 for all customers in a company
and then update the read status for the customers
}
在处理一些客户记录后,如果出现任何异常,已处理记录的读取状态不会更新。
此外,如果处理了几百万条客户记录,hibernate entity manager 将被关闭。
在上述流程执行中,读取状态只有在处理完所有公司的所有客户后才会更新。
现在,我想知道是否有任何有效的方法来加载和更新客户的数据,以便在出现异常时我的读取状态更新不会丢失。
【问题讨论】:
-
您不会在一次通话中读取一百万客户的记录。此外,您的伪代码不会显示您拥有的内容,您可以删除核心业务逻辑,但在没有看到您的代码的情况下,做出假设对任何人都无济于事。另外,你是如何安排你的方法的?
标签: hibernate spring-boot spring-data-jpa