繁体   English   中英

我可以一次使用jpa / hibernate执行批量查询吗?

[英]Can I execute batch of queries using jpa/hibernate in a single shot?

这是示例代码。 sourceFileItemNo和EntityDplStatus是一些值的数组。

Query query; 
for(int i = 0 ;(sourceFileItemNo!=null && i< sourceFileItemNo.length); i++){
    Object[] parameters = {entityDplStatus[i],"1",sourceFileItemNo[i]};
    String queryString = "UPDATE GtcEntityDetailsValue c SET c.dplStatus=?1 where c.referenceNo=?2 and c.itemNo=?3";
    query = manager.createQuery(queryString);
    query = setQueryParameters(query, parameters);
    query.executeUpdate();
}

在这种情况下,我们在每次迭代中每次都更新细节。 JPA是否提供了将查询添加到列表或其他内容并像旧的连接语句执行批处理一样一次性执行所有查询的规定?

是的,您可以使用休眠轻松地执行此操作,将要保留的具有更新值的对象列表传递给您,然后执行以下操作:

 private void updteRecord(List<Records> records){
    int batchSize=10;
    for(int i=0;i<records.size();i++)
    {
        getSession().saveOrUpdate(records.get(i));

        if(i%batchSize==0)
        {
            getSession().flush();
            getSession().clear();
        }
    }
}

您要馈送给该方法的记录列表应包含您需要更新的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM