我有一个代码,它使用hibernate批量更新功能(更新表set =:arg,其中id =:id ...)在for循环中更新一堆表或记录。因此,如果要更新100条记录,则会从hibernate触发100次更新。有没有办法将这些多个更新打包成一个批量更新(读取jdbc批处理)(或者至少减少更新被激活)? 我理解hibernate隐式执行批处理,但在上面的情况下它似乎没有发生。
答案 0 :(得分:0)
Hibernate在刷新时尝试batch DML operations,因此请让用户设置以下属性:
<property name="hibernate.order_inserts" value="true"/>
<property name="hibernate.order_updates" value="true"/>
<property name="hibernate.jdbc.fetch_size" value="20"/>
<property name="hibernate.jdbc.batch_size" value="50"/>
还要考虑IDENTITY生成器disable JDBC batching。