第一种方式
public void saveCus(final List<Cus> cuss) {
this.getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
if (CollectionUtils.isNotEmpty(cuss)) {
Transaction tx = null;
try {
tx = session.beginTransaction();
int i = 0;
for (Cus c : cuss) {
session.save(c);
i++;
if (i % 100 == 0) {
logger.warn("第" + (i / 100) + "次刷新");
session.flush();
session.clear();
}
session.flush();
}
} catch (Exception e) {
logger.warn("批量插入出现异常:" + e);
} finally {
if (session != null)
session.close();
}
}
return null;
}
});
}
第二种方式:
Transatcion tx=session.beginTransaction();
for(int i=0;i<10000;i++)
{
Student st=new Student();
st.setName("feifei");
session.save(st);
if(i%50==0) //以每50个数据作为一个处理单元
{
session.flush(); //保持与数据库数据的同步
session.clear(); //清除内部缓存的全部数据,及时释放出占用的内存
}
}
tx.commit();
浙公网安备 33010602011771号