Мне нужно обработать файл 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
. Оба они занимают примерно такое же количество времени (459s против 443s). Вопрос в том, что сохранение объектов один за другим, как это, является оптимальным. Насколько я знаю, Hibernate (который является моим провайдером JPA) реализует некоторые функции кеша/флеша, поэтому мне не стоит беспокоиться об этом.