【发布时间】:2017-08-03 13:21:45
【问题描述】:
我有三个要保存到数据库的实体列表。
总共有大约 1000 个实体必须持续存在。
entityRepo.save(EntityList);
但是,这需要 4-5 分钟才能完成。 - 我注意到它在插入之前做了一些选择,我认为它是休眠脏检查以查看它是否需要更新或插入。
无论如何禁用它并提高休眠插入的速度?
一直在研究刷新,但在一次保存整个列表时不知道该怎么做?
【问题讨论】:
-
不要将 save 与列表一起使用,而是自己迭代。打开批量插入,并在循环每个 x(例如 50)对象时刷新和清除 en
entity manager。每次持久化一个对象时,hibernate 都会检查 所有 一级缓存中的实体,对于 1 个实体,这并不明显,但对于 1000 个实体,它会非常快地倾斜。将其限制为 50 并在两者之间刷新/清除有助于解决此问题。
标签: database hibernate spring-boot insert spring-data-jpa