1

嗨,我有一个应用程序,我首先检查数据库表中的值,如果不存在,则生成一个新值并插入数据库,这个循环大约一百万次,我怎样才能加快速度?

在我的工人阶级中:-

session=HibernateSessionFactory.getSession();       
    for(----loop 

    i check

    i generate

    then:-

    MyTable myTable=new MyTable();
            myTable.setName("dasdas");
            myTable.setww("ss");
            myTable.setaa("daaasdas");

    hibernateRepositoy.save(dgCcno,session);

}

保存方法我另一个类: -

  public void save(Object obj,Session session)  {       

            Transaction tx = null;
            try {
                tx = session.beginTransaction();
                session.saveOrUpdate(obj);
                session.flush();

                session.clear();
                tx.commit();
            }
            catch (HibernateException e) {
                e.printStackTrace();
                logger.error(e.getMessage(), e);            

                if(tx!=null){
                    tx.rollback();
                }
            } 
            catch (Exception e) {
                e.printStackTrace();

                logger.error(e.getMessage(), e);        

            }
        } 

我怎样才能加快速度,或者这是正确的方法?

补充:-我不能使用批量更新,我必须立即插入值,因为下一个选择查询中的值可能是相同的..然后必须从数据库中给出值

4

1 回答 1

6
  • 不要每行使用一个事务,而是将所有内容(或至少重要的子集)包含在单个事务中
  • 发出单个查询以一次验证多行的存在
  • 遵循参考文档的建议
于 2012-05-21T10:51:55.467 回答