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