Я новичок в спящий режим у меня есть сомнения в спящий режим пакетной обработки, я читал некоторые учебник для обработки спящего режима пакетной они сказалиЧто такое использование обработки спящего режима пакетной
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 будет кэшировать все сохранялось объекты в кеш-кеш-кеш и, в конечном итоге, ваше приложение упадет с OutOfMemoryException где-то около 50 000-й строки. Вы можете решить эту проблему, если вы используете пакетную обработку с 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