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 語句中為刷新設置相同的大小。
添加回答
舉報