我的系统框架是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();
}
}