一尘不染

批量插入或使用Hibernate更新?

hibernate

我需要从每日CSV文件中消耗大量数据。CSV包含约12万条记录。使用hibernate模式时,这会减慢爬行速度。基本上,当使用saveOrUpdate()时,hibernate似乎在每个单独的INSERT(或UPDATE)之前执行SELECT。对于使用saveOrUpdate()持久存储的每个实例,在实际的INSERT或UPDATE之前发出SELECT。我能理解为什么要这样做,但是在进行批量处理时效率很低,我正在寻找替代方法

我有信心性能问题在于我使用hibernate的方式,因为我得到了另一个使用本机SQL的版本(以相同的方式解析CSV)以及其围绕这个新版本的字面含义。

那么,对于实际的问题,是否存在可以代替mysqls“ INSERT … ON DUPLICATE”语法的hibernate方式?

或者,如果我选择为此执行本机SQL,是否可以在hibernate事务中执行本机SQL?意思是,它将支持提交/回滚吗?


阅读 212

收藏
2020-06-20

共1个答案

一尘不染

根据对类似问题的回答,可以通过将Hibernate配置为使用自定义存储过程来插入对象,该存储过程使用数据库的upsert功能。虽然不漂亮。

2020-06-20