我正在使用JPA框架来执行一些数据库操作。
首先,我创建一个EntityManager
对象,然后使用代码段保存特定表的实体对象
"entityManager.persist(specificEntity)"
这个持久化操作是从带有注释的方法
完成的"@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)"
我尝试在该方法中使用for循环来保留大量数据,并且所有数据都保留在一个事务中。 通常情况下这一切都很好,但是当我试图坚持很多行时,我面临问题和错误
"Out of operation records in transaction coordinator (increase MaxNoOfConcurrentOperations)"
我的数据库支持大约32,000个并发操作。 那么在JPA框架中是否有任何方法来指定并发操作的最大数量。
答案 0 :(得分:2)
我假设您在循环中创建实体,并且EntityManagers FlushModeType设置为COMMIT,这意味着EM等待您提交事务,直到将记录发送/插入数据库。
即使您可以放置EM max操作计数值,让AS在一个事务中处理数万个实体的插入(最坏的情况:甚至将事务数据写入等待提交的平面文件)肯定不是一个好主意。
要么对块进行某种批处理,要么至少在这种特殊情况下将FlushModeType自动提交的记录设置为AUTO开始。