【问题标题】:Bulk updation in hibernate休眠中的批量更新
【发布时间】:2018-02-12 09:13:02
【问题描述】:

批量更新在本地系统上运行良好,但在测试服务器上执行需要数小时。尽管数据库使用不多且包含 150 000 条记录。

    Session session=hibernateTemplate.getSessionFactory().openSession();
    String sqlQuery = "FROM DemoDB";
    List<DemoDB> demoList = session.createQuery(sqlQuery).list();
    for (int j = 0; j < demoList.size(); j++) { 
        DemoDB demoObj = demoList.get(j);
        if(emailFlagMap.containsKey(demoObj.getEmail()))
        {
            demoObj.setSendOutDone(emailFlagMap.get(demoObj.getEmail()));
        }

        session.update(demoObj);
        if (j % 1000 == 0 && j > 0) {
            session.flush();
            session.clear();
        }

    }
    session.flush();
    session.clear();
    session.close();
}
catch(Exception e)
{
    logger.error("Exception occurred while getting response :"+e);
    e.printStackTrace();
}

【问题讨论】:

    标签: java hibernate bulkupdate


    【解决方案1】:

    请在下面尝试。如果您为任何字段设置了任何新值,则更新记录,否则忽略此记录。

            Session session=hibernateTemplate.getSessionFactory().openSession();
            String sqlQuery = "FROM DemoDB";
            List<DemoDB> demoList = session.createQuery(sqlQuery).list();
            for (int j = 0; j < demoList.size(); j++) { 
                DemoDB demoObj = demoList.get(j);
                if(emailFlagMap.containsKey(demoObj.getEmail()))
                {
                    demoObj.setSendOutDone(emailFlagMap.get(demoObj.getEmail()));
                    session.update(demoObj);
                }
    
    
                if (j % 1000 == 0 && j > 0) {
                    session.flush();
                    session.clear();
                }
    
            }
            session.flush();
            session.clear();
            session.close();
        }
        catch(Exception e)
        {
            logger.error("Exception occurred while getting response :"+e);
            e.printStackTrace();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-04
      • 2014-10-07
      • 2015-09-08
      • 2015-08-03
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 2011-12-07
      相关资源
      最近更新 更多