--------------------- 题记
根据项目需求,需要批量保存一些明细,若明细太多直接使用foreach保存的话会抛出OutOfMemoryException,那么如何解决,代码如下。
--------------------- 代码
public void saves(final List<PriceBillItem> priceBillItems) throws Exception {
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
for (int i = 0; i < priceBillItems.size(); i++) {
PriceBillItem priceBillItem = priceBillItems.get(i);
session.save(priceBillItem);
//将数据刷入数据库并清空session
if (i % 10 == 0) {
session.flush();
session.clear();
}
}
return null;
}
});
}