背景
我遇到了需要实现的JPA级联批量更新问题。 更新将占用大约10000个对象并立即将它们合并到数据库中。 这些物体的平均深度为5个物体,平均大小约为3 kb 持久性提供者是Oracle Toplink
这会占用大量内存,需要几分钟才能完成。
我环顾四周,看到了3种可能性:
循环使用标准JPA合并声明并按特定时间间隔刷新
使用JPQL
使用Toplink自己的API(我没有任何经验)
所以我有几个问题
我会通过使用JPQL来减少标准合并的开销吗?如果我理解正确,合并会导致整个对象树在被调用之前被克隆。它真的更快吗?加速这个过程有一些技巧吗?
如何使用Toplink API进行批量合并?
我知道这是主观的但是:有没有人在JPA / Toplink中进行大型级联批量更新?也许我没有考虑过的事情?
相关问题
答案 0 :(得分:1)
使用JPQL不确定您的意思?如果您可以根据JPQL更新语句表达更新逻辑,那么这样做效率会更高。
绝对将您的工作分成几批。还要确保使用批量写入和序列预分配。
请参阅,
http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.html