第一种方式
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();