我需要从每日CSV文件中消耗相当多的数据。 CSV包含大约120K条记录。使用休眠时,这会减慢抓取速度。基本上,看起来在使用saveOrUpdate()时,hibernate在每一个INSERT(或UPDATE)之前都会执行SELECT操作。对于每个使用saveOrUpdate()持久化的实例,都会在实际的INSERT或UPDATE之前发出SELECT。我可以理解为什么它这样做,但它做非常低效的批量处理,我正在寻找替代品批量插入或更新与休眠?
我相信性能问题在于我使用hibernate的方式,因为我得到了另一个版本与原生SQL工作(解析CSV的激动人心的相同方式)和它的字面上围绕这个新版本的字面上运行的圆)
所以,到实际的问题,做一个休眠替代mysqls“INSERT ... ON DUPLICATE“语法存在吗?或者,如果我选择为此执行原生SQL,我可以在hibernate事务中执行原生SQL吗?意思是说,它会支持提交/回滚吗?
你是什么意思“Hibernate是每一个插入(或更新)之前执行SELECT使用saveOrUpdate时,()。” ?你可以发布你用来保存数据的代码吗?顺便说一下,12万条记录是一个巨大的数据! – Rakesh
刚刚发现一篇关于[休眠时批处理]的文章(http://onetouchcode.com/2016/08/21/batch-processing-example-in-hibernate/) – Shailendra