我需要從每日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