如何执行级联JPA / toplink批量更新

时间:2013-01-09 12:49:14

标签: jpa weblogic jpql toplink

背景

我遇到了需要实现的JPA级联批量更新问题。 更新将占用大约10000个对象并立即将它们合并到数据库中。 这些物体的平均深度为5个物体,平均大小约为3 kb 持久性提供者是Oracle Toplink

这会占用大量内存,需要几分钟才能完成。

我环顾四周,看到了3种可能性:

循环使用标准JPA合并声明并按特定时间间隔刷新

使用JPQL

使用Toplink自己的API(我没有任何经验)

所以我有几个问题

我会通过使用JPQL来减少标准合并的开销吗?如果我理解正确,合并会导致整个对象树在被调用之前被克隆。它真的更快吗?加速这个过程有一些技巧吗?

如何使用Toplink API进行批量合并?

我知道这是主观的但是:有没有人在JPA / Toplink中进行大型级联批量更新?也许我没有考虑过的事情?

相关问题

Batch updates in JPA (Toplink)

Batch insert using JPA/Toplink

1 个答案:

答案 0 :(得分:1)

使用JPQL不确定您的意思?如果您可以根据JPQL更新语句表达更新逻辑,那么这样做效率会更高。

绝对将您的工作分成几批。还要确保使用批量写入和序列预分配。

请参阅,

http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.html