用getHibernateTemplate()批量插入数据时出错

来源:互联网 发布:软件著作权申请有效期 编辑:程序博客网 时间:2024/04/30 01:39

我的系统框架是struts+spring+hibernate,今天想往数据库批量的插入数据,愿以为使用

getHibernateTemplate().saveOrUpdateAll(objs);可以很快搞定,但是测试中老是插不尽数据。代码是这样的。

    public void batchInsert(Collection objs){
     log.debug("objs size = "+objs.size()); 
     getHibernateTemplate().saveOrUpdateAll(objs);
     //getHibernateTemplate().flush();}

结果没办法,使用hibernate的老办法才解决问题。代码如下

    public void batchInsert(Collection objs){
     log.debug("objs size = "+objs.size()); 
     //getHibernateTemplate().saveOrUpdateAll(objs);
     //getHibernateTemplate().flush();
     //getHibernateTemplate().getSessionFactory();
     log.debug("open session");

          Session session = getHibernateTemplate().getSessionFactory().openSession();
        Transaction tx = null;
        try
        {
                log.debug("begin transaction");
          tx = session.beginTransaction();
                if (objs.size() > 0)
                {
                 for(Iterator it=objs.iterator();it.hasNext();){
                  
                  IdeclResult rs = (IdeclResult)it.next();
                  log.debug("transaction save company name="+rs.getCompanyName());
                  session.save(rs);
                 }
                }
               
                tx.commit();
        }
        catch (HibernateException he)
        {
                tx.rollback();
                throw he;
        }
        finally
        {
                session.close();
        }
     
    }