我是新來的冬眠,我有疑問,在休眠批量處理,我讀了一些教程休眠批處理他們說什麼是使用Hibernate批量處理的
Session session = SessionFactory.openSession();
Transaction tx = session.beginTransaction();
for (int i=0; i<100000; i++)
{
Employee employee = new Employee(.....);
session.save(employee);
}
tx.commit();
session.close();
Hibernate將緩存中的所有的持久化對象會話級別的緩存,最終你的應用程序會在第50000行左右出現OutOfMemoryException。你可以,如果你使用的是批量處理和Hibernate像解決此問題,
Session session = SessionFactory.openSession();
Transaction tx = session.beginTransaction();
for (int i=0; i<100000; i++)
{
Employee employee = new Employee(.....);
session.save(employee);
if(i % 50 == 0)
{ // Same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();
我懷疑是不是外面初始化會話,我們爲什麼不能初始化到像循環,
Session session = null;
Transaction tx = session.beginTransaction();
for (int i=0; i<100000; i++)
{
session =SessionFactory.openSession()
Employee employee = new Employee(.....);
session.save(employee);
}
tx.commit();
session.close();
這是正確的方式或沒有任何一個建議我正確的方式?
被佔用的內存剛剛發現約的一篇文章[休眠時的批處理](http://onetouchcode.com/2016/08/21/batch-processing-example-in-hibernate/) – Shailendra 2016-08-27 18:27:17