gpt4 book ai didi

java - 如何在 SaveAll() 之前关闭选择?

转载 作者:行者123 更新时间:2023-12-02 02:14:30 25 4
gpt4 key购买 nike

我需要在使用 Hibernate 和 Jpa 的 Spring Boot 应用程序中关闭 saveAll() 之前的选择,以提高大量记录的性能。

我找到了一种使用 JPQL 的方法,具有良好的性能(在 30 秒内删除+保存 10k 条记录),但我想继续使用 hibernate 和 jpa。

我的期望是,当我运行用java编写的代码时,我必须删除表中的所有记录,然后保存另一个表中的所有记录。当我以经典方式(deleteAll()、findAll(),然后 saveAll())执行此操作时,我在 saveAll() 期间的性能很低,因为它在保存之前会选择列表中的所有记录。

我想避免在保存记录之前执行所有选择的代码。不使用 EntityManager 或 EntityManagerFactory 是否可以实现?

最佳答案

编写两个 native 查询:使用存储库类上的 @Query 注释进行 DELETE 和 INSERT SELECT。

这是解决这些问题的最佳方法。如果您只需将记录从一个表复制到另一个表,那么使用 jpa 并加载数千个对象是没有意义的。使用 findAll 可能会引发内存不足错误。

关于java - 如何在 SaveAll() 之前关闭选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311443/

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