Мне нужно обработать файл CSV и для каждой записи (строки) сохранить сущность. Прямо сейчас я делаю это следующим образом:
while ((line = reader.readNext()) != null) {
Entity entity = createEntityObject(line);
entityManager.save(entity);
i++;
}
где метод save (Entity)
по сути является просто вызовом EntityManager.merge ()
. В CSV-файле около 20 000 сущностей (строк). Это эффективный способ сделать это? Вроде довольно медленно. Было бы лучше использовать EntityManager.persist ()
? Есть ли в этом решении какие-либо недостатки?
РЕДАКТИРОВАТЬ
Это длительный процесс (более 400 секунд), и я попробовал оба решения, с persist
и merge
. На выполнение обоих требуется примерно одинаковое время (459 с против 443 с). Вопрос в том, оптимально ли сохранять объекты одну за другой. Насколько мне известно, Hibernate (который является моим поставщиком JPA) действительно реализует некоторые функции кеширования / очистки, поэтому мне не нужно об этом беспокоиться.