hibernate session actionqueue clear
https://stackoverflow.com/questions/27755461/why-is-hibernate-batching-order-inserts-order-updates-disabled-by-default
flush() следует применять только в тех случаях когда необходимо получать сохраненную версию объекта перед заверщением транзакции.
clear() очищает hibernate сессию
session.load update saveOrUpdate persist delete наполняют сессию различными обхектами в кеш 1го уровня. в actionQueue добавляются сущности для обработки при session.flush().
при закрытии сессии кеш 1го уровня очищается.
int i=0;
for(<1000 p="">i++;
final Object entity = session.load(name,oid);
session.delete(entity);
if(i%20 ==0){
session.flush();
session.clear();
}
}1000>
flush() следует применять только в тех случаях когда необходимо получать сохраненную версию объекта перед заверщением транзакции.
clear() очищает hibernate сессию
session.load update saveOrUpdate persist delete наполняют сессию различными обхектами в кеш 1го уровня. в actionQueue добавляются сущности для обработки при session.flush().
при закрытии сессии кеш 1го уровня очищается.
int i=0;
for(<1000 p="">i++;
final Object entity = session.load(name,oid);
session.delete(entity);
if(i%20 ==0){
session.flush();
session.clear();
}
}1000>
<1000 p="">
1000>
1000>
<1000 p="">
1000>
1000>
<1000 p="">
1000>
1000>
<1000 p="">************ lazy fields1000>
поля lazy работают только в рамках сессии - если сессию закрыли session.close() то lazyInitException.
если используется @transactional то границами сессии управляет спринг.
rppagation = required или required_new границей сессии будет метод под @Transactional
после выхода из метода сессия закроется и все объекты сессии станут недоступны.
сессия будет только на самом верхнем уровне стека вызовов - самый верхний обозначенный @Transactional
заход в @Transactional метод забирает коннект из пула!
после выхода из @transactional метода будет вызван hibernate.flush() чтобы все изменения над объектами сохранить в бд. если поставить в @Transactional(readOnly = true ) то hibernate.flush() не вызовет. если есть вложенные @transactional то вся вложенная транзакция станет readOnly!
Комментарии
Отправить комментарий