1 回答
TA贡献1827条经验 获得超4个赞
Hibernate 页面上有这篇文章:http: //docs.jboss.org/hibernate/orm/4.2/manual/en-US/html/ch15.html
根据他们的说法,你需要这样的东西:
create(list);
// ------------------------
public static void create(List<Object> objList) throws DatabaseException {
Session hsession = null;
try {
hsession = SqlDataHibernateUtil.getSessionFactory().openSession();
Transaction htransaction = hsession.beginTransaction();
int count = 0;
for(Agagf x: objList) {
hsession.save(obj);
if ( ++count % 20 == 0 ) { //20, same as the JDBC batch size
//flush a batch of inserts and release memory:
hsession.flush();
hsession.clear();
count = 0;
}
}
} catch (HibernateException ex) {
throw new DatabaseException(ex);
} finally {
htransaction.commit();
if (hsession != null) {
hsession.close();
}
}
}
此外,启用批处理的配置:
如果您正在进行批处理,则需要启用 JDBC 批处理。如果您想获得最佳性能,这是绝对必要的。将 JDBC 批处理大小设置为合理的数字(例如 10-50):
hibernate.jdbc.batch_size 20
编辑:在你的情况下,使用批量大小来更好地适应你的体积。请记住在配置和 if 语句中为刷新设置相同的大小。
添加回答
举报