在Hibernate中批量更新

我正在尝试实现此博客文章https://www.baeldung.com/jpa-hibernate-batch-insert-update

中记录的批量插入和更新

我在批处理更新中遇到一些性能问题。我正在尝试更新大约100万个储蓄帐户,并且每个储蓄帐户与储蓄帐户交易具有@OneToMany关系。我的处理方式是先保存所有交易,然后再更新所有储蓄帐户。批保存/插入过程非常迅速,但是批更新需要很长时间才能完成。

我打开了休眠的SQL记录器,我看到它为每个储蓄帐户生成两个更新语句:一个用于储蓄帐户,一个用于交易。如何关闭交易更新?

关于如何优化批处理更新的任何想法?

批量插入储蓄帐户交易记录:

        int i = 0;
        for(SavingsaccountTransaction savingsaccountTransaction : savingsaccountTransactionsForSaving) {
            if(i > 0 && i%BATCH_SIZE == 0) {
                entityManager.flush();
                entityManager.clear();
            }

            entityManager.persist(savingsaccountTransaction);
            i++;
        }

更新储蓄帐户:

        int i = 0;
        for(Savingsaccount savingsaccount : savingsaccountsListForupdate) {
            if(i > 0 && i%BATCH_SIZE == 0) {
                entityManager.flush();
                entityManager.clear();
            }

            entityManager.merge(savingsaccount);
            i++;
        }
viphu857143 回答:在Hibernate中批量更新

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3031620.html

大家都在问