[java] Вопрос о Hibernate session.flush ()



Answers

Зависит от того, как настроен FlushMode.

В конфигурации по умолчанию Hibernate пытается синхронизировать с базой данных в трех местах.

1. before querying data
2. on commiting a transaction
3. explictly calling flush

Если FlushMode установлен как FlushMode.Manual, программист информирует спящий режим, что он / она будет обрабатывать, когда передавать данные в базу данных. В этой конфигурации вызов session.flush() будет сохранять экземпляры объектов в базе данных.

Для очистки контекста стойкости можно использовать вызов session.clear() .

Question

Я хочу узнать о том, что на самом деле делает метод flush в следующем случае:

for (int i = 0; i < myList.size(); i++) {
    Car c = new Car( car.get(i).getId(),car.get(i).getName() );
    getCurrentSession().save(c);
    if (i % 20 == 0)
        getCurrentSession().flush();
}

Означает ли это, что после итерации 20 кеш очищается, а затем 20 сохраненных объектов памяти фактически сохраняются в базе данных?

Может кто-нибудь, пожалуйста, объясните мне, что произойдет, когда условие будет истинным.




Да каждые 20 циклов, sql генерируется и выполняется для несохраненных объектов. Также вы должны установить режим партии до 20 для увеличения производительности.




Related