【发布时间】:2025-12-28 12:15:11
【问题描述】:
我需要处理一个 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 提供程序)确实实现了一些缓存/刷新功能,所以我不必担心这一点。
【问题讨论】:
标签: java jpa entitymanager