如何在休眠中启用批量插入?


问题内容

使用休眠时,当我尝试使用以下方式启用批量插入时

  <property name="jdbc.batch_size">50</property>

我得到以下输出:

 [...] cfg.SettingsFactory INFO  - JDBC batch updates for versioned data: disabled
 [...] cfg.SettingsFactory INFO  - Order SQL inserts for batching: disabled

然后这个:

 [...] jdbc.AbstractBatcher DEBUG - Executing batch size: 1

batch size: 1基本上没有。

我是否缺少设置?


问题答案:

原来这种情况下缺少的是:

<property name="order_inserts">true</property>

参考:https :
//forum.hibernate.org/viewtopic.php

?
p
=2374413https
:
//stackoverflow.com/a/5240930/32453
或可能是hibernate.order_inserts。

现在我明白了

 [...] cfg.SettingsFactory INFO  - Order SQL inserts for batching: enabled
 ...
 [...] Executing batch size: 2

频繁得多(任何大于1的值基本上都意味着它成功完成了批量插入)。

hibernate.jdbc.batch_versioned_data也可能有用。

jdbc:mysql:// localhost:3306 / batch?rewriteBatchedStatements =
true类型连接字符串也可能以某种方式相关。

https://forum.hibernate.org/viewtopic.php?p=2374413,另请参阅
Hibernate批量大小混淆