如何持久化大量实体 (JPA)
2022-09-02 12:54:42
我需要处理一个CSV文件,并为每个记录(行)保留一个实体。现在,我这样做:
while ((line = reader.readNext()) != null) {
Entity entity = createEntityObject(line);
entityManager.save(entity);
i++;
}
其中,该方法基本上只是一个调用。CSV 文件中大约有 20,000 个实体(行)。这是一种有效的方法吗?它似乎很慢。使用会更好吗?此解决方案是否有任何缺陷?save(Entity)
EntityManager.merge()
EntityManager.persist()
编辑
这是一个漫长的过程(超过400s),我尝试了这两种解决方案,使用和.两者完成所需的时间大致相同(459秒对443秒)。问题是,像这样逐个保存实体是否是最佳的。据我所知,Hibernate(这是我的JPA提供程序)确实实现了一些缓存/刷新功能,所以我不必担心这一点。persist
merge