Хотя я вижу много дискуссий о Hibernate и Batch Update, вот мой конкретный сценарий, я надеюсь получить комментарии от всех экспертов.Я перебираю список объектов Document и для каждого документа мне нужно обновить таблицу DOCUMENT_METADATA свойством из объекта Document.
Я могу просто использовать стандартное пакетное обновление JDBC 2.0 для этого.Тем не менее, использование JDBC будет противоречить стандарту программного обеспечения в моем месте для использования Hibernate во всем приложении, и я не хочу делать исключение.
Чтобы использовать Hibernate, я должен сначала получить объект DocumentMetadata, учитывая документИдентификатор объекта Document, который я перебираю, задайте свойство DocumentMetadata и затем обновите таблицу.
Я могу сделать что-то вроде
for each document {
//fetch DocumentMetadata object given the id from Document
//invoke setter on DocumentMetadata object
em.persist(DocumentMetadata);
if (count % 50 == 0) {
em.flush(); //flush a batch of updates and release memory:
em.clear();
}
}
Для n записей (я буду запускать около 10 000 записей ввремя), как в лучшем случае я не делаю n выбирает = 1 обновление с подходом Hibernate выше?Учитывая размер моей таблицы (таблица DOCUMENT_METADATA содержит более 100 столбцов и 1 миллион записей), я боюсь, что столкнусь с проблемой производительности, сопоставленной с подходом JDBC.
Любые предложения?
Спасибо, KOB