CSV ファイルを処理し、レコード (行) ごとにエンティティを保持する必要があります。今、私はこのようにしています:
while ((line = reader.readNext()) != null) {
Entity entity = createEntityObject(line);
entityManager.save(entity);
i++;
}
save(Entity)
メソッドは基本的に単なる呼び出しEntityManager.merge()
です。CSV ファイルには約 20,000 のエンティティ (行) があります。これは効果的な方法ですか?かなり遅いようです。を使った方が良いでしょうEntityManager.persist()
か?このソリューションには何らかの欠陥がありますか?
EDITこれは長いプロセス(400秒以上)であり、と
の両方のソリューションを試しました。どちらも完了までにかかる時間はほぼ同じです (459 秒と 443 秒)。問題は、このようにエンティティを 1 つずつ保存することが最適かどうかです。私の知る限り、Hibernate (私の JPA プロバイダー) はいくつかのキャッシュ/フラッシュ機能を実装しているので、これについて心配する必要はありません。persist
merge